C# 读写ini配置文件的类

本文提供了一个用于读写INI配置文件的类。通过简单的实例化,即可实现INI文件中int与string类型参数的读取与写入,同时支持删除指定key及section。

 

写程序的时候经常会遇到读写配置文件的情况,使用这个类可以方便的读写ini文件.

ContractedBlock.gifExpandedBlockStart.gifView Code
  1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.IO;
6 using System.Runtime.InteropServices;
7
8 namespace MyLibrary
9 {
10 /// <summary>
11 /// 用于读写ini配置文件,
12 /// 需建立实例,直接使用其中的静态方法就可以了
13 /// </summary>
14 class IniFile
15 {
16 private string fileName;
17 public IniFile(string filename)
18 {
19 fileName = filename;
20 }
21
22 [DllImport("kernel32")]
23 private static extern int GetPrivateProfileInt(
24 string lpAppName,// 指向包含 Section 名称的字符串地址
25 string lpKeyName,// 指向包含 Key 名称的字符串地址
26 int nDefault,// 如果 Key 值没有找到,则返回缺省的字符串的地址
27 string lpFileName
28 );
29 [DllImport("kernel32")]
30 private static extern int GetPrivateProfileString(
31 string lpAppName,// 指向包含 Section 名称的字符串地址
32 string lpKeyName,// 指向包含 Key 名称的字符串地址
33 string lpDefault,// 如果 Key 值没有找到,则返回缺省的字符串的地址
34 StringBuilder lpReturnedString,// 返回字符串的缓冲区地址
35 int nSize,// 缓冲区的长度
36 string lpFileName
37 );
38 [DllImport("kernel32")]
39 private static extern bool WritePrivateProfileString(
40 string lpAppName,// 指向包含 Section 名称的字符串地址
41 string lpKeyName,// 指向包含 Key 名称的字符串地址
42 string lpString,// 要写的字符串地址
43 string lpFileName
44 );
45
46 /// <summary>
47 /// 以配置文件中int型参数的值
48 /// </summary>
49 /// <param name="section">参数所在的区段</param>
50 /// <param name="key">参数的关键字</param>
51 /// <param name="def">def为未找到相应key时返回的缺省值</param>
52 /// <returns>返回ini型的参数</returns>
53 public int GetInt(string section, string key, int def)
54 {
55 return GetPrivateProfileInt(section, key, def, fileName);
56 }
57 /// <summary>
58 /// 获取ini配置文件中string型的参数
59 /// </summary>
60 /// <param name="section">参数所在的区段</param>
61 /// <param name="key">参数的关键字</param>
62 /// <param name="def">def为未找到相应key时返回的缺省值</param>
63 /// <returns>返回string型的参数</returns>
64 public string GetString(string section, string key, string def)
65 {
66 StringBuilder temp = new StringBuilder(1024);
67 GetPrivateProfileString(section, key, def, temp, 1024, fileName);
68 return temp.ToString();
69 }
70 /// <summary>
71 /// 写入int型数据到配置文件
72 /// </summary>
73 /// <param name="section">参数所在的区段</param>
74 /// <param name="key">参数的关键字</param>
75 /// <param name="iVal">要写入的值</param>
76 public void WriteInt(string section, string key, int iVal)
77 {
78 WritePrivateProfileString(section, key, iVal.ToString(), fileName);
79 }
80 /// <summary>
81 /// 写入string型数据到配置文件
82 /// </summary>
83 /// <param name="section">参数所在的区段</param>
84 /// <param name="key">参数的关键字</param>
85 /// <param name="iVal">要写入的值</param>
86 public void WriteString(string section, string key, string strVal)
87 {
88 WritePrivateProfileString(section, key, strVal, fileName);
89 }
90 /// <summary>
91 /// 删除key
92 /// </summary>
93 /// <param name="section">参数所在的区段</param>
94 /// <param name="key">参数的关键字</param>
95 public void DelKey(string section, string key)
96 {
97 WritePrivateProfileString(section, key, null, fileName);
98 }
99 /// <summary>
100 /// 删除区段
101 /// </summary>
102 /// <param name="section">参数所在的区段</param>
103 public void DelSection(string section)
104 {
105 WritePrivateProfileString(section, null, null, fileName);
106 }
107 }
108 }

转载于:https://www.cnblogs.com/liuxia19872003/archive/2011/10/12/2208781.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值