C#讀寫INI文件


一、認識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);
View Code

讀寫方法:

 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         }
View Code

在程序根目錄創建一個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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM