Files
2024-09-22 22:21:11 +08:00

80 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Ini文件读写类
---
- **IniFile**
Ini文件读写类,基类为IniBase,已经处理过中文读写。
**建议读写的ini文件为IniFile存储的文件。以免造成文件编码不统一。**
- Ini文件格式
程序没有任何配置文件,那么它对外是全封闭的,一旦程序需要修改一些参数必须要修改程序代码本身并重新编译,为了让程序出厂后还能根据需要进行必要的配置,所以要用配置文件;配置文件有很多种,如INI配置文件,XML配置文件,cfg配置文件,还有就是可以使用系统注册表等。
INI ”就是英文 “initialization”的头三个字母的缩写;当然INI file的后缀名也不一定是".ini"也可以是".cfg",".conf ”或者是".txt"。
INI文件的格式很简单,最基本的三个要素是:parameters,sections和comments。
什么是parameters?
INI所包含的最基本的“元素”就是parameter;每一个parameter都有一个name和一个value,如下所示:
name = value
什么是sections?
所有的parameters都是以sections为单位结合在一起的。所有的section名称都是独占一行,并且sections名字都被方括号包围着([ and ])。在section声明后的所有parameters都是属于该section。对于一个section没有明显的结束标志符,一个section的开始就是上一个section的结束,或者是end of the file。Sections一般情况下不能被nested,当然特殊情况下也可以实现sections的嵌套。
section如下所示:
[section]
什么是comments?
在INI文件中注释语句是以分号“;”开始的。所有的所有的注释语句不管多长都是独占一行直到结束的。在分号和行结束符之间的所有内容都是被忽略的。
注释实例如下:
;comments text
- IniFile类支持的数据类型
Windows API(WritePrivateProfileString)支持的类型为string类型,通过类型转换扩展了以下类型:
bool,byte,byte[],char,Color,Datetime,decimal,double,float,int,
long,Point,PointF,sbyte,short,Size,SizeF,uint,ulong,ushort,
Struct*
- 写文件
~~~
IniFile ini = new IniFile("D:\\setup.ini");
ini.Write("Setup", "Name", "Sunny");
ini.Write("Setup", "Age", 18);
ini.UpdateFile();
~~~
ini配置文件被写到D:\setup.ini
**注意,ini文件名必须是完全路径,不能是相对路径**
如果需要在程序可执行目录下生成ini文件,可用以下方法:
~~~
IniFile ini = new IniFile(DirEx.CurrentDir() + "Setup.ini");
~~~
打开此文件
~~~
;<!--配置文件-->
[Setup]
Name=Sunny
Age=18
~~~
注意,如果写的文件在C盘,系统为win7以上,请确保所运行的程序有相应的权限可以在C盘文件夹写文件。
Write函数主要包括三个参数,分别对应Ini格式的section,name,value
- 读文件
~~~
IniFile ini = new IniFile("D:\\setup.ini");
string name = ini.ReadString("Setup", "Name", "");
int age = ini.ReadInt("Setup", "Age", 0);
~~~
Read函数主要包括三个参数,分别对应Ini格式的section,name,Default(如配置文件有值则从配置文件取值,如没有取Default值)
- 其他函数
获取指定的Section名称中的所有Key
public string[] GetKeys(string section)
从Ini文件中,读取所有的Sections的名称
public string[] Sections
读取指定的Section的所有Value到列表中
public void GetSectionValues(string section, NameValueCollection values)
清除某个Section
public void EraseSection(string section)
删除某个Section下的键
public void DeleteKey(string section, string key)
检查某个Section下的某个键值是否存在
public bool KeyExists(string section, string key)