保存配置的方式有很多種,前面寫(xiě)了xml文件,這篇來(lái)介紹下另一種方式:ini文件。

為什么要用ini文件呢,相對xml來(lái)說(shuō),ini文件的數據結構看起來(lái)其實(shí)并不占優(yōu)勢,而且現在基本也都是用xml來(lái)保存;但是ini文件呢,對于windows系統來(lái)說(shuō),最起碼一看就是明顯的配置文件,這給人的感覺(jué)就一個(gè)字:專(zhuān)業(yè)(開(kāi)玩笑)。其實(shí)采用什么文件完全看個(gè)人想法。并不是存在著(zhù)絕對的正確。本篇也只是以技術(shù)的角度去介紹。。
ini文件的結構大致如下所示,一個(gè)節點(diǎn)下附帶多個(gè)鍵值對屬性。

讀取和寫(xiě)入的話(huà),也完全可以用前面寫(xiě)到的文件流方式,然后用字符串分割或者正則表達式去處理(如果你不嫌麻煩的話(huà)),這里我們借用winapi來(lái)對ini文件的讀寫(xiě)操作。
實(shí)現功能:
使用WinApi函數操作ini文件
開(kāi)發(fā)環(huán)境:
開(kāi)發(fā)工具:Visual Studio 2013
.NET Framework版本:4.5
實(shí)現代碼:
//需導入命名空間using System.Runtime.InteropServices;/// <summary>/// 寫(xiě)入ini文件/// </summary>/// <param name="node">節點(diǎn)名稱(chēng)</param>/// <param name="key">鍵</param>/// <param name="value">值</param>/// <param name="filepath">ini路徑</param>/// <returns>0失敗/其他成功</returns>[DllImport("kernel32")]private static extern long WritePrivateProfileString(string node, string key, string value, string filepath);/// <summary>////// </summary>/// <param name="node">節點(diǎn)名稱(chēng)</param>/// <param name="key">鍵</param>/// <param name="value">值(未讀取到數據時(shí)設置的默認返回值)</param>/// <param name="result">讀取的結果值</param>/// <param name="size">讀取緩沖區大小</param>/// <param name="filePath">ini路徑</param>/// <returns>讀取到的字節數量</returns>[DllImport("kernel32")]private static extern int GetPrivateProfileString(string node, string key, string value, StringBuilder result, int size, string filePath);string iniPath = Application.StartupPath + "\\config.ini";private void GetIni(){//聲明接收的數據StringBuilder builder = new StringBuilder(1024);//調用Winapi函數讀取config節點(diǎn)下Name的值int len = GetPrivateProfileString("config", "Name", "", builder, 1024, iniPath);//輸出:張三Console.WriteLine(builder.ToString());}private void WriteIni(){//調用Winapi函數將Name=張三寫(xiě)入config節點(diǎn)下long len = WritePrivateProfileString("config", "Name", "張三", iniPath);len = WritePrivateProfileString("config", "Sex", "男", iniPath);//調用Winapi函數將Name=李四config2節點(diǎn)下len = WritePrivateProfileString("config2", "Name", "李四", iniPath);len = WritePrivateProfileString("config2", "Sex", "女", iniPath);}
具體的參數我已在函數上標明,對號入座就可以;如果想要覆蓋節點(diǎn)值的話(huà),數據整理完成后,直接運行寫(xiě)入的代碼就會(huì )自動(dòng)修改
由簡(jiǎn)入繁,拿來(lái)即用
后續精彩,持續關(guān)注
聯(lián)系客服