我們c#讀寫配置文件通常用IO對文件進行讀寫。我覺得使用winapi的Kernel32.dll 對ini文件讀取更好更方便一些
對ini文件讀寫 我們可以使用Kernel32.dll 中的WritePrivateProfileString(寫入),GetPrivateProfileString(讀入字符串) ,GetPrivateProfileInt(讀入整型值)三個方法。下面我介紹著三個方法
一.將信息寫入.INI文件中.
1.所用的WINAPI函數為: WritePrivateProfileString
[DllImport("Kernel32.dll")]
public static extern bool WritePrivateProfileString(string strAppName,
string strKeyName,
string strString,
string strFileName);
其中各參數的意義:
string strAppName, 是INI文件中的一個字段名.
string strKeyName,是strAppName下的一個鍵名,通俗講就是變量名.
string strString,是鍵值,也就是變量的值(string類型的)
string strFileName 是完整的INI文件路徑名.
2.具體使用方法:設我有一個網頁刷新器. 我要保存我設置的網頁(URL),和間隔時間(time)
WritePrivateProfileString("Settings", "Url", "http://wenti.cnblogs.com","c:\\config.ini");
WritePrivateProfileString("Settings", "Time", "20","c:\\config.ini");
保存的ini文件中的內容如下:
[Settings]
Url=http://wenti.cnblogs.com
Time=20
二.將信息從INI文件中讀入程序中的變量.
1.所用的WINAPI函數原型為:
[DllImport("Kernel32.dll")]
public static extern int GetPrivateProfileString(string strAppName,
string strKeyName,
string strDefault,
StringBuilder sbReturnString,
int nSize,
string strFileName);
其中各參數的意義:
前二個參數與 WritePrivateProfileString中的意義一樣.
strDefault : 如果INI文件中沒有前兩個參數指定的字段名或鍵名,則將此值賦給變量.
strReturnedString : 接收INI文件中的值的string對象,即目的緩存器.
nSize : 目的緩存器的大小.
strFileName : 是完整的INI文件路徑名.
2.具體使用方法:現要將上一步中寫入的信息讀入程序中.
StringBuilder sb = new StringBuilder(256);
GetPrivateProfileString("Settings", "Url", "http://", sb, 256,c:\\config.ini");
GetPrivateProfileString("Settings", "Time", "10", sb, 256,c:\\config.ini");
執行後 sb的值為:"http://wenti.cnblogs.com",若前兩個參數有誤,其值為:"http://".
3.讀入整型值要用另一個WINAPI函數:
[DllImport("Kernel32.dll")]
public static extern int GetPrivateProfileInt(string strAppName,
string strKeyName,
int nDefault,
string strFileName);