使用C#讀寫(xiě)ini配置文件
文章錄入:王子 責任編輯:dingkai1983 116
【字體:
小大】
INI就是擴展名為"INI"的文件,其實(shí)他本身是個(gè)文本文件,可以用記事本打工,主要存放的是用戶(hù)所做的選擇或系統的各種參數.
INI文件其實(shí)并不是普通的文本文件.它有自己的結構.由若干段落(SECTION)組成,在每個(gè)帶括號的標題下面,是若干個(gè)以單個(gè)單詞開(kāi)頭的關(guān)鍵字(KEYWORD)和一個(gè)等號,等號右邊就是關(guān)鍵字的值(VALUE).例如:
[Section1]
KeyWord1 = Value1
KeyWord2 = Value2
...
[Section2]
KeyWord3 = Value3
KeyWord4 = Value4
C#命名空間中沒(méi)有直接讀寫(xiě)INI的類(lèi),當然如果你把INT當成文本文件用System.IO類(lèi)來(lái)讀寫(xiě)算我沒(méi)說(shuō).
我現在介紹的是系統處理INI的方法.
雖然C#中沒(méi)有,但是在"kernel32.dll"這個(gè)文件中有Win32的API函數--WritePrivateProfileString()和GetPrivateProfileString()
C#聲明INI文件的寫(xiě)操作函數WritePrivateProfileString():
[DllImport( "kernel32" )]
private static extern long WritePrivateProfileString ( string section ,string key , string val
, string filePath ) ;
參數說(shuō)明:section:INI文件中的段落;key:INI文件中的關(guān)鍵字;val:INI文件中關(guān)鍵字的數值;filePath:INI文件的完整的路徑和名稱(chēng)。
C#申明INI文件的讀操作函數GetPrivateProfileString():
[DllImport("kernel32")]
private static extern int GetPrivateProfileString ( string section ,
string key , string def , StringBuilder retVal ,
int size , string filePath ) ;
參數說(shuō)明:section:INI文件中的段落名稱(chēng);key:INI文件中的關(guān)鍵字;def:無(wú)法讀取時(shí)候時(shí)候的缺省數值;retVal:讀取數值;size:數值的大??;filePath:INI文件的完整路徑和名稱(chēng)。
下面是一個(gè)讀寫(xiě)INI文件的類(lèi):
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>
/// 構造方法
/// </summary>
/// <param name="INIPath">文件路徑</param>
public INIClass(string INIPath)
{
inipath = INIPath;
}
/// <summary>
/// 寫(xiě)入INI文件
/// </summary>
/// <param name="Section">項目名稱(chēng)(如 [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">項目名稱(chēng)(如 [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);
}
}