Skip to content

Yokosama/Excalibur.Ini

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Excalibur.Ini

C#实现的ini读写库。支持.NET,.NET Core等平台。

特点

1、支持自定义的注释解析,如;//#

2、支持节点名称、属性值后的注释解析

3、支持全局属性解析

4、支持自定义ini格式,包括节点起始、结束符,键值分隔符(默认为 =

5、支持重复的节点和属性配置

6、查找节点和属性的速度快

7、更自由的解析和格式化写入配置

使用方式

添加命名空间:

using Excalibur.Ini

通过IniDataParser解析ini字符串或者文件流

var parser = new IniDataParser();

// 解析ini字符串
var iniData = parser.Parse(@"inistring");

// 解析ini文件
using (FileStream fs = File.Open("test.ini", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
    using (StreamReader sr = new StreamReader(fs, Encoding.Default))
    {
        var iniData = parser.Parse(sr);
    }
}

通过IniFile加载、保存文件

var iniFile = new IniFile();

// 加载文件
var iniData = iniFile.Load("test.ini", Encoding.Default);

// 保存文件
iniFile.Save(data, saveFile, Encoding.Default);

获取ini节点

var section = iniData.GetSection("SectionName");

获取属性、属性值,属性值默认存储为string类型

// 获取属性
var property = iniData.GetProperty("Key");

// 通过iniData获取属性值
// 获取默认的字符串值
string value = iniData.GetPropertyRawValue("SectionName", "Key", "DefaultValue");

// 获取自动转换类型后的属性值
int value = iniData.GetPropertyValue("SectionName", "Key", 0);

// 通过Section获取属性值
// 获取默认的字符串值
var value = section.GetPropertyRawValue("Key", "DefaultValue");

// 获取自动转换类型后的属性值
var value = section.GetPropertyValue("Key", 0);

修改ini解析格式,可以通过IniDataParser.Scheme进行修改:

var parser = new IniDataParser();
// 添加注释类型
parser.Scheme.CommentStrings.Add("//");
parser.Scheme.CommentStrings.Add("#");

// 修改节点起始、结束符号
parser.Scheme.SectionStartString = "<";
parser.Scheme.SectionEndString = ">";

// 修改键值分隔符
parser.Scheme.PropertyAssignmentString = "-";

修改ini解析配置,可以通过IniDataParser.Configuration进行修改:

var parser = new IniDataParser();
// 忽略节点名称、属性关键字的大小写
parser.Configuration.CaseInsensitive = true;

// 是否允许全局节点存在
parser.Configuration.AllowKeysWithoutSection = true;

// 解析到重复节点时的行为,允许重复添加
parser.Configuration.DuplicateSectionsBehaviour = DuplicateBehaviour.AllowAndRepeat;

// 解析属性行后的注释
parser.Configuration.ParseCommentAfterProperty = true;

更多ini解析配置,可以参见IniParserConfiguration.cs

通过IniDataFormatter格式化输出文本,通过IniFormattingConfiguration进行格式化方式配置:

var parser = new IniDataParser();
var iniData = parser.Parse(@"inistring");

var formatter = new IniDataFormatter();
// 格式化配置
var formattingConfiguration = new IniFormattingConfiguration();
// 获取格式化后的ini字符串
var result = formatter.Format(iniData, formattingConfiguration);

也可以根据实际需求,自行编写格式化功能

更多使用方式可以参考测试项目

Releases

No releases published

Packages

No packages published

Languages