通常C#使用基于XML的配置文件,不過如果有需要的話,比如要兼顧較老的系統,可能還是要用到INI文件。
但C#本身并不具備讀寫INI文件的API,只有通過調用非托管代碼的方式,即系統自身的API才能達到所需的目的。
對應讀寫的方法分別為GetPrivateProfileString和WritePrivateProfileString。
GetPrivateProfileString中的各參數:
lpAppName ―― section的名稱
lpKeyName ―― key的名稱
lpDefault ―― 如果lpKeyName沒有被找到的話,則將這個值復制到lpReturnedString中
lpReturnedString ―― 用于返回結果的值
nSize ―― lpReturnedString的字符長度
lpFileName ―― INI文件名
WritePrivateProfileString中的各參數:
lpAppName ―― section的名稱
lpKeyName ―― key的名稱
lpString ―― 與lpKeyName對應的值
lpFileName ―― INI文件名
實際代碼如下所示:
namespace INIDemo
{
class Program
{
static void Main(string[] args)
{
WritePrivateProfileString("Demo", "abc", "123", "c://demo.ini");
StringBuilder temp = new StringBuilder();
GetPrivateProfileString("Demo", "abc", "", temp, 255, "c://demo.ini");
Console.WriteLine(temp);
Console.ReadLine();
}
[DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)]
private static extern bool WritePrivateProfileString(
string lpAppName, string lpKeyName, string lpString, string lpFileName);
[DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)]
private static extern int GetPrivateProfileString(
string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString,
int nSize, string lpFileName);
}
}
由于INI文件的格式是固定的,所以只要編寫相應的解析程序就可以完成同樣的讀寫功能,就是通常的字符串處理而已。
如果你不愿親自動手的話,不要緊,已經有現成的程序――Cinchoo framework,可以為你實現你想作的事情。
然后一切又變得簡單了。
新聞熱點
疑難解答