c# api读写ini配置文件的类

发布时间:2019-09-08编辑:脚本学堂
本文介绍了c# api读写ini文件的方法,c#代码中使用api读写ini文件的实例代码,有需要的朋友参考下。

ini就是扩展名为"ini"的文件,其实他本身是个文本文件,可以用记事本打工,主要存放的是用户所做的选择或系统的各种参数.
ini文件其实并不是普通的文本文件.它有自己的结构.由若干段落(section)组成,在每个带括号的标题下面,是若干个以单个单词开头的关键字(keyword)和一个等号,等号右边就是关键字的值(value).

例如:
 

复制代码 代码示例:
[section1]
    keyword1 = value1
    keyword2 = value2
    ...
[section2]
    keyword3 = value3
    keyword4 = value4

c#命名空间中没有直接读写ini的类,当然如果你把int当成文本文件用system.io类来读写算我没说.
我现在介绍的是系统处理ini的方法.
虽然c#中没有,但是在"kernel32.dll"这个文件中有win32的api函数--writeprivateprofilestring()和getprivateprofilestring()
c#声明ini文件的写操作函数writeprivateprofilestring():
 
[dllimport( "kernel32" )]
  private static extern long writeprivateprofilestring ( string section ,string key , string val
, string filepath ) ;
参数说明:section:ini文件中的段落;key:ini文件中的关键字;val:ini文件中关键字的数值;filepath:ini文件的完整的路径和名称。
c#申明ini文件的读操作函数getprivateprofilestring():
 

[dllimport("kernel32")]
 private static extern int getprivateprofilestring ( string section ,
  string key , string def , stringbuilder retval ,
  int size , string filepath ) ;
 

参数说明:section:ini文件中的段落名称;
key:ini文件中的关键字;
def:无法读取时候时候的缺省数值;
retval:读取数值;
size:数值的大小;
filepath:ini文件的完整路径和名称。

一个读写ini文件的类:
 

复制代码 代码示例:
public class iniclass
{ // www.jb200.com
 public string inipath;
 [dllimport("kernel32")]
 private static extern long writeprivateprofilestring(string section,string key,string val,string filepath);
 [dllimport("kernel32")]
 private static extern int getprivateprofilestring(string section,string key,string def,stringbuilder retval,int size,string filepath);
 /// <summary>
 /// 构造方法
 /// </summary>
 /// <param name="inipath">文件路径</param>
 public iniclass(string inipath)
 {
  inipath = inipath;
 }
 /// <summary>
 /// 写入ini文件
 /// </summary>
 /// <param name="section">项目名称(如 [typename] )</param>
 /// <param name="key">键</param>
 /// <param name="value">值</param>
 public void iniwritevalue(string section,string key,string value)
 {
  writeprivateprofilestring(section,key,value,this.inipath);
 }
 /// <summary>
 /// 读出ini文件
 /// </summary>
 /// <param name="section">项目名称(如 [typename] )</param>
 /// <param name="key">键</param>
 public string inireadvalue(string section,string key)
 {
  stringbuilder temp = new stringbuilder(500);
  int i = getprivateprofilestring(section,key,"",temp,500,this.inipath);
  return temp.tostring();
 }
 /// <summary>
 /// 验证文件是否存在
 /// </summary>
 /// <returns>布尔值</returns>
 public bool existinifile()
 {
  return file.exists(inipath);
 }
}