一、認識INI文件結構
INI文件格式由節、鍵、值組成。
節
[section]
參數
(鍵=值)
name=value
二、實操
在開發中,有時會遇到對INI文件的讀寫操作。
針對ini文件寫了一個工具類。供大家參考。
引用庫函數:
1 /// <summary> 2 /// 為INI文件中指定的節點取得字符串 3 /// </summary> 4 /// <param name="lpAppName">欲在其中查找關鍵字的節點名稱</param> 5 /// <param name="lpKeyName">欲獲取的項名</param> 6 /// <param name="lpDefault">指定的項沒有找到時返回的默認值</param> 7 /// <param name="lpReturnedString">指定一個字串緩沖區,長度至少為nSize</param> 8 /// <param name="nSize">指定裝載到lpReturnedString緩沖區的最大字符數量</param> 9 /// <param name="lpFileName">INI文件完整路徑</param> 10 /// <returns>復制到lpReturnedString緩沖區的字節數量,其中不包括那些NULL中止字符</returns> 11 [DllImport("kernel32")] 12 private static extern int GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName); 13 14 /// <summary> 15 /// 修改INI文件中內容 16 /// </summary> 17 /// <param name="lpApplicationName">欲在其中寫入的節點名稱</param> 18 /// <param name="lpKeyName">欲設置的項名</param> 19 /// <param name="lpString">要寫入的新字符串</param> 20 /// <param name="lpFileName">INI文件完整路徑</param> 21 /// <returns>非零表示成功,零表示失敗</returns> 22 [DllImport("kernel32")] 23 private static extern int WritePrivateProfileString(string lpApplicationName, string lpKeyName, string lpString, string lpFileName);
讀寫方法:
1 /// <summary> 2 /// 讀取INI文件值 3 /// </summary> 4 /// <param name="section">節點名</param> 5 /// <param name="key">鍵</param> 6 /// <param name="def">未取到值時返回的默認值</param> 7 /// <param name="filePath">INI文件完整路徑</param> 8 /// <returns>讀取的值</returns> 9 public static string Read(string section, string key, string def, string filePath) 10 { 11 StringBuilder sb = new StringBuilder(1024); 12 GetPrivateProfileString(section, key, def, sb, 1024, filePath); 13 return sb.ToString(); 14 } 15 16 /// <summary> 17 /// 寫INI文件值 18 /// </summary> 19 /// <param name="section">欲在其中寫入的節點名稱</param> 20 /// <param name="key">欲設置的項名</param> 21 /// <param name="value">要寫入的新字符串</param> 22 /// <param name="filePath">INI文件完整路徑</param> 23 /// <returns>非零表示成功,零表示失敗</returns> 24 public static int Write(string section, string key, string value, string filePath) 25 { 26 CheckPath(filePath); 27 return WritePrivateProfileString(section, key, value, filePath); 28 } 29 30 /// <summary> 31 /// 刪除節 32 /// </summary> 33 /// <param name="section">節點名</param> 34 /// <param name="filePath">INI文件完整路徑</param> 35 /// <returns>非零表示成功,零表示失敗</returns> 36 public static int DeleteSection(string section, string filePath) 37 { 38 return Write(section, null, null, filePath); 39 } 40 41 /// <summary> 42 /// 刪除鍵的值 43 /// </summary> 44 /// <param name="section">節點名</param> 45 /// <param name="key">鍵名</param> 46 /// <param name="filePath">INI文件完整路徑</param> 47 /// <returns>非零表示成功,零表示失敗</returns> 48 public static int DeleteKey(string section, string key, string filePath) 49 { 50 return Write(section, key, null, filePath); 51 }
在程序根目錄創建一個INI文件:
string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "sys.ini");//在當前程序路徑創建 File.Create(filePath);//創建INI文件
寫入內容:
//寫入節點1 INIHelper.Write("s1", "1", "a", filePath); INIHelper.Write("s1", "2", "b", filePath); INIHelper.Write("s1", "3", "c", filePath); //寫入節點2 INIHelper.Write("s2", "4", "d", filePath); INIHelper.Write("s2", "5", "e", filePath); //改節點值(就是重寫一遍) INIHelper.Write("s1", "3", "c3", filePath);
讀取
//讀取節點1中的key為1的值 string value = INIHelper.Read("s1", "1", "789", filePath);
刪除節點/鍵
INIHelper.DeleteKey("s1", "2", filePath);//刪除節點s1中key為2的值 INIHelper.DeleteSection("s1", filePath);//刪除節點s2
完整代碼:https://pan.baidu.com/s/1-jQ7v5cDNkScrKryGu9I1A
原文地址:https://www.cnblogs.com/xiesong/p/10320893.html
