C#读写INI文件

时间:2022-08-30 18:12:27

INI文件格式由节、键、值组成。

[section]

参数

(键=值)

name=value

 

在开发中,有时会遇到对INI文件的读写操作。

针对ini文件写了一个工具类。供大家参考。

引用库函数:

C#读写INI文件C#读写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

读写方法:

C#读写INI文件C#读写INI文件
 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