背景 之前采用ini文件作為程序的配置文件,覺得這種結構簡單明了,配置起來也挺方便。然後操作方式是通過WindowsAPI,然後再網上找到一個基於WindowsAPI封裝的help類,用起來倒也順手。用的多了,覺得還可以使用文件流來操作,後來就發現了EasyConfig。 EasyConfig是一個純C#的開源ini文件操作庫,但是在使用上有諸多不便,只是個人感覺,於是個人將其改造了一下,是自己喜歡用的風格。 資源下載 如果不清楚ini文件結構,請百度一下,這裡貼一個示例文件。 Ini文件示例 EasyConfig 原版 EasyConfig 改寫後 代碼示例 首先來看看改寫後,怎麼去使用她來讀寫Ini文件。 static void Main(string[] args) { ConfigFile configFile = new ConfigFile("Test.ini"); //遍歷Config文件 foreach (var group in configFile.SettingGroups) { Console.WriteLine("****************************"); Console.WriteLine(group.Key + ":"); Console.WriteLine(); foreach (var value in group.Value.Settings) Console.WriteLine("{0} = {1} (Is Array? {2}),{3}", value.Key, value.Value.RawValue, value.Value.IsArray, value.Value.Desp); Console.WriteLine(); } //讀取值主要是在具體的配置項上進行讀取,是首先定位到[Group],其次就是具體的項 //使用泛型讀取值,並指定讀取失敗時的默認值 var fullScreen = configFile["Video"]["Fullscreen"].As<int>(-1);//失敗 var bFullScreen = configFile["Video"]["Fullscreen"].AsBool();//成功 var arrCanShoot = configFile["Level1"]["CanShoot"].AsArray<bool>(); //讀取時 該項不存在,不存在的組或者項會自動添加 var noexists = configFile["Video"]["xxxxxxxxxxx"].AsString(); var noexists2 = configFile["Video111111111"]["xxxxxxxxxxx"].AsString(); //寫入值有2種方法,可以直接向某組下寫入一項,也可以定位到某組某項,寫入值 //寫入值 該項不存在,組或者項會自動創建 configFile["Video"].WriteSetting("NewName", "EasyConfig"); configFile["Video"].WriteSetting("NewName", "EasyConfig2.0"); configFile["Video22222222"].WriteSetting("c1", "1"); //索引器不過是返回Setting configFile["Video3333"]["UserName"].SetValue("admin"); configFile["Viedo4444"]["Sex"].SetValue("男", "女", "保密"); //寫入值,該項不存在 configFile["Video222"].WriteSetting("NewName", "EasyConfig3.0"); Console.ReadKey(true); configFile.Save("TestConfig2.txt"); } 基本上自己想要的效果,則是基於 ConfigFile["GroupName"]["Key"] 這樣的方式來進行讀寫。 另外附上一個基於WindowsAPI操作的封裝類。 IniFileHelp