INI就是擴(kuò)展名為"INI"的文件,其實他本身是個文本文件,可以用記事本打工,主要存放的是用戶所做的選擇或系統(tǒng)的各種參數(shù). INI文件其實并不是普通的文本文件.它有自己的結(jié)構(gòu).由若干段落(SECTION)組成,在每個帶括號的標(biāo)題下面,是若干個以單個單詞開頭的關(guān)鍵字(KEYWORD)和一個等號,等號右邊就是關(guān)鍵字的值(VALUE).例如: [Section1] KeyWord1 = Value1 KeyWord2 = Value2 ... [Section2] KeyWord3 = Value3 KeyWord4 = Value4
C#命名空間中沒有直接讀寫INI的類,當(dāng)然如果你把INT當(dāng)成文本文件用System.IO類來讀寫算我沒說. 我現(xiàn)在介紹的是系統(tǒng)處理INI的方法. 雖然C#中沒有,但是在"kernel32.dll"這個文件中有Win32的API函數(shù)--WritePrivateProfileString()和GetPrivateProfileString() C#聲明INI文件的寫操作函數(shù)WritePrivateProfileString():
[DllImport( "kernel32" )] private static extern long WritePrivateProfileString ( string section ,string key , string val , string filePath ) ;
參數(shù)說明:section:INI文件中的段落;key:INI文件中的關(guān)鍵字,;val:INI文件中關(guān)鍵字的數(shù)值,;filePath:INI文件的完整的路徑和名稱。 C#申明INI文件的讀操作函數(shù)GetPrivateProfileString():
[DllImport("kernel32")] private static extern int GetPrivateProfileString ( string section , string key , string def , StringBuilder retVal , int size , string filePath ) ;
參數(shù)說明:section:INI文件中的段落名稱,;key:INI文件中的關(guān)鍵字,;def:無法讀取時候時候的缺省數(shù)值;retVal:讀取數(shù)值,;size:數(shù)值的大?。籪ilePath:INI文件的完整路徑和名稱,。
下面是一個讀寫INI文件的類:
public class INIClass { public string inipath; [DllImport("kernel32")] private static extern long WritePrivateProfileString(string section,string key,string val,string filePath); [DllImport("kernel32")] private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath); /// <summary> /// 構(gòu)造方法 /// </summary> /// <param name="INIPath">文件路徑</param> public INIClass(string INIPath) { inipath = INIPath; } /// <summary> /// 寫入INI文件 /// </summary> /// <param name="Section">項目名稱(如 [TypeName] )</param> /// <param name="Key">鍵</param> /// <param name="Value">值</param> public void IniWriteValue(string Section,string Key,string Value) { WritePrivateProfileString(Section,Key,Value,this.inipath); } /// <summary> /// 讀出INI文件 /// </summary> /// <param name="Section">項目名稱(如 [TypeName] )</param> /// <param name="Key">鍵</param> public string IniReadValue(string Section,string Key) { StringBuilder temp = new StringBuilder(500); int i = GetPrivateProfileString(Section,Key,"",temp,500,this.inipath); return temp.ToString(); } /// <summary> /// 驗證文件是否存在 /// </summary> /// <returns>布爾值</returns> public bool ExistINIFile() { return File.Exists(inipath); } }
|