<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    泰仔在線

    java學習,心情日記,繽紛時刻
    posts - 100, comments - 34, trackbacks - 0, articles - 0

    C#中處理INI文件的類

    Posted on 2009-03-04 10:47 泰仔在線 閱讀(509) 評論(0)  編輯  收藏 所屬分類: .NET相關
    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace Test.Modules
    {
        
    public abstract class CustomIniFile
        
    {
            
    public CustomIniFile(string AFileName)
            
    {
                FFileName 
    = AFileName;
            }

            
    private string FFileName;
            
    public string FileName
            
    {
                
    get return FFileName; }
            }

            
    public virtual bool SectionExists(string Section)
            
    {
                List
    <string> vStrings = new List<string>();
                ReadSections(vStrings);
                
    return vStrings.Contains(Section);
            }

            
    public virtual bool ValueExists(string Section, string Ident)
            
    {
                List
    <string> vStrings = new List<string>();
                ReadSection(Section, vStrings);
                
    return vStrings.Contains(Ident);
            }

            
    public abstract string ReadString(string Section, string Ident, string Default);
            
    public abstract bool WriteString(string Section, string Ident, string Value);
            
    public abstract bool ReadSectionValues(string Section, List<string> Strings);
            
    public abstract bool ReadSection(string Section, List<string> Strings);
            
    public abstract bool ReadSections(List<string> Strings);
            
    public abstract bool EraseSection(string Section);
            
    public abstract bool DeleteKey(string Section, string Ident);
            
    public abstract bool UpdateFile();
        }

        
    /// <summary>
        
    /// 存儲本地INI文件的類。
        
    /// </summary>

        public class IniFile : CustomIniFile
        
    {
            [DllImport(
    "kernel32")]
            
    private static extern uint GetPrivateProfileString(
                
    string lpAppName, // points to section name
                string lpKeyName, // points to key name
                string lpDefault, // points to default string
                byte[] lpReturnedString, // points to destination buffer
                uint nSize, // size of destination buffer
                string lpFileName  // points to initialization filename
            );
            [DllImport(
    "kernel32")]
            
    private static extern bool WritePrivateProfileString(
                
    string lpAppName, // pointer to section name
                string lpKeyName, // pointer to key name
                string lpString, // pointer to string to add
                string lpFileName  // pointer to initialization filename
            );
            
    /// <summary>
            
    /// 構造IniFile實例。
            
    /// <param name="AFileName">指定文件名</param>
            
    /// </summary>

            public IniFile(string AFileName)
                : 
    base(AFileName)
            
    {
            }

            
    /// <summary>
            
    /// 析夠IniFile實例。
            
    /// </summary>

            ~IniFile()
            
    {
                UpdateFile();
            }

            
    /// <summary>
            
    /// 讀取字符串值。
            
    /// <param name="Ident">指定變量標識。</param>
            
    /// <param name="Section">指定所在區域。</param>
            
    /// <param name="Default">指定默認值。</param>
            
    /// <returns>返回讀取的字符串。如果讀取失敗則返回該值。</returns>
            
    /// </summary>

            public override string ReadString(string Section, string Ident, string Default)
            
    {
                
    byte[] vBuffer = new byte[2048];
                
    uint vCount = GetPrivateProfileString(Section,
                    Ident, Default, vBuffer, (
    uint)vBuffer.Length, FileName);
                
    return Encoding.Default.GetString(vBuffer, 0, (int)vCount);
            }

            
    /// <summary>
            
    /// 寫入字符串值。
            
    /// </summary>
            
    /// <param name="Section">指定所在區域。</param>
            
    /// <param name="Ident">指定變量標識。</param>
            
    /// <param name="Value">所要寫入的變量值。</param>
            
    /// <returns>返回寫入是否成功。</returns>

            public override bool WriteString(string Section, string Ident, string Value)
            
    {
                
    return WritePrivateProfileString(Section, Ident, Value, FileName);
            }

            
    /// <summary>
            
    /// 獲得區域的完整文本。(變量名=值格式)。
            
    /// </summary>
            
    /// <param name="Section">指定區域標識。</param>
            
    /// <param name="Strings">輸出處理結果。</param>
            
    /// <returns>返回讀取是否成功。</returns>

            public override bool ReadSectionValues(string Section, List<string> Strings)
            
    {
                List
    <string> vIdentList = new List<string>();
                
    if (!ReadSection(Section, vIdentList)) return false;
                
    foreach (string vIdent in vIdentList)
                    Strings.Add(
    string.Format("{0}={1}", vIdent, ReadString(Section, vIdent, "")));
                
    return true;
            }

            
    /// <summary>
            
    /// 讀取區域變量名列表。
            
    /// </summary>
            
    /// <param name="Section">指定區域名。</param>
            
    /// <param name="Strings">指定輸出列表。</param>
            
    /// <returns>返回獲取是否成功。</returns>

            public override bool ReadSection(string Section, List<string> Strings)
            
    {
                
    byte[] vBuffer = new byte[16384];
                
    uint vLength = GetPrivateProfileString(Section, nullnull, vBuffer,
                    (
    uint)vBuffer.Length, FileName);
                
    int j = 0;
                
    for (int i = 0; i < vLength; i++)
                    
    if (vBuffer[i] == 0)
                    
    {
                        Strings.Add(Encoding.Default.GetString(vBuffer, j, i 
    - j));
                        j 
    = i + 1;
                    }

                
    return true;
            }

            
    /// <summary>
            
    /// 讀取區域名列表。
            
    /// </summary>
            
    /// <param name="Strings">指定輸出列表。</param>
            
    /// <returns></returns>

            public override bool ReadSections(List<string> Strings)
            
    {
                
    byte[] vBuffer = new byte[16384];
                
    uint vLength = GetPrivateProfileString(nullnullnull, vBuffer,
                    (
    uint)vBuffer.Length, FileName);
                
    int j = 0;
                
    for (int i = 0; i < vLength; i++)
                    
    if (vBuffer[i] == 0)
                    
    {
                        Strings.Add(Encoding.Default.GetString(vBuffer, j, i 
    - j));
                        j 
    = i + 1;
                    }

                
    return true;
            }

            
    /// <summary>
            
    /// 刪除指定區域。
            
    /// </summary>
            
    /// <param name="Section">指定區域名。</param>
            
    /// <returns>返回刪除是否成功。</returns>

            public override bool EraseSection(string Section)
            
    {
                
    return WritePrivateProfileString(Section, nullnull, FileName);
            }

            
    /// <summary>
            
    /// 刪除指定變量。
            
    /// </summary>
            
    /// <param name="Section">變量所在區域。</param>
            
    /// <param name="Ident">變量標識。</param>
            
    /// <returns>返回刪除是否成功。</returns>

            public override bool DeleteKey(string Section, string Ident)
            
    {
                
    return WritePrivateProfileString(Section, Ident, null, FileName);
            }

            
    /// <summary>
            
    /// 更新文件。
            
    /// </summary>
            
    /// <returns>返回更新是否成功。</returns>

            public override bool UpdateFile()
            
    {
                
    return WritePrivateProfileString(nullnullnull, FileName);
            }

        }

    }

    轉自:C#中處理INI文件的類
    主站蜘蛛池模板: 亚洲爆乳精品无码一区二区三区| 无码毛片一区二区三区视频免费播放| 亚洲国产一区二区视频网站| 久久精品免费全国观看国产| 免费精品99久久国产综合精品| 久久精品国产亚洲AV电影网| ww亚洲ww在线观看国产| 亚洲国产成人久久精品影视| 亚洲精品国产高清嫩草影院| 欧洲美熟女乱又伦免费视频| 在线永久免费的视频草莓| 久章草在线精品视频免费观看| 日本精品久久久久久久久免费 | 亚洲AV无码一区二区三区网址 | 6080午夜一级毛片免费看| 99re8这里有精品热视频免费| 黄色毛片免费网站| 亚洲AV无码一区二区乱子仑| 亚洲精品综合在线影院| 亚洲欧洲尹人香蕉综合| 久久久亚洲裙底偷窥综合| 亚洲欧洲在线观看| 亚洲成色WWW久久网站| 丁香五月亚洲综合深深爱| 亚洲第一成人影院| 无码国产亚洲日韩国精品视频一区二区三区 | 免费看成人AA片无码视频羞羞网| 99精品免费观看| 99热在线免费播放| 日韩在线永久免费播放| 日日麻批免费40分钟无码| 中文字幕在线免费| 亚洲免费一级视频| 美女视频黄的全免费视频 | 亚洲欧美成人av在线观看| 涩涩色中文综合亚洲| 亚洲综合一区国产精品| 亚洲欧洲免费无码| 国产成人 亚洲欧洲| 一道本在线免费视频| 中文字幕在线成人免费看|