您的位置:首页 > 编程语言 > C#

使用C#读写ini配置文件

2013-06-26 12:01 525 查看
转载地址:http://www.soaspx.com/dotnet/csharp/csharp_20100727_5173.html

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

{
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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: