INI 处理程序





4.00/5 (23投票s)
2004年4月27日
2分钟阅读

104560

2008
允许简单访问 ini 文件
引言
这个类 (IniHandler
) 允许访问 Ini 文件。该类表示 ini 文件的内容,并具有列出、添加、删除和重命名类别(更像是节,但...随便什么)的功能,并且可以列出、创建、删除和修改键值对。该类具有静态方法来读取和写入文件。
使用代码
唯一的类是 IniHandler
类,所有内容都在其中实现。它不会直接将每次更改写入文件。相反,您获取所有数据,然后修改它,最后保存它。
第一部分处理所有结构
所有数据都保存在一个 System.Collections.SortedList
中,其中包含类别名称作为键,所有键值对作为值,也保存为 SortedList
。因此,这意味着 SortedList
中包含 SortedList
。它的行为类似于一个数组中的数组,但具有动态边界和字符串作为索引。
希望您理解了这一点,用法语或德语解释会更容易。当然,您可以列出所有类别以及指定类别中的所有键。当您想要修改或读取值时,只需要指定类别名称和键名称即可。
这段代码是你编写 ini 文件所需的一切
IniStructure Ini = new IniStructure();
Ini.AddCategory("NewSection");
Ini.AddValue("NewSection","NewKey","value");
Ini.ModifyValue("NewSection","NewKey","Newvalue");
IniStructure.WriteIni(Ini,"c:\filename.ini","Optional \n multiline \n comment");
那么 c:\filename.ini 文件将包含
# Optional
# multiline
# comment
[NewSection]
NewKey=NewValue
每次写入时,文件都会被清除并从头开始重写。
要读取一个 ini 文件,非常相似
IniStructure Ini = IniStructure.ReadIni("C:\filename.ini");
string[] allCategories = Ini.GetCategories();
// if Global would be a category, this lists all keys:
string[] keysInGlobal = Ini.GetKeys("Global");
// and if testkey would be a key in Global:
string testKeyValue = Ini.GetValue("Global","testkey");
还有一些方法可以按索引列出类别和键值对,但它们仅用于在保存期间遍历所有类别和键。
关注点
这是我第一次使用 SortedLists,并且首先尝试在没有它们的情况下编写此代码,但我很高兴我找到了它们,因为这使得代码更加简单。还有一些事情要做,例如错误处理:因为大多数方法只返回布尔值,所以你只能知道是否发生错误,而不能知道更多。诸如不正确的名称(在类别名称中没有 '=', '[', ']' 等)之类的错误会被处理,但仅此而已。肯定还有改进的空间,但情况总是如此,不是吗?
历史
- 4 月 17 日:第一个版本。
-
5 月 29 日:Bug 修复 -
IniStructure.ReadIni(string)
现在可以读取只读 ini 文件,因为它使用FileAccess.Read
参数打开文件。