C# 通过第三方库INIFileParser管理INI配置文件目录
- 前言
- 一、添加动态库
- 二、添加接口类代码
- 总结
前言
很多时候我们是直接调用系统的C++库中的GetPrivateProfileString和WritePrivateProfileString接口来实现管理INI文件的,这个接口最久可以追溯到上个世纪80年代,在VB和C++中都可以调用,我认识这个接口有20年了。在使用C#后,WIN10或WIN11环境下发现了越来越多的问题,主要发现路径上有特殊字符号,如#、+、空格、中文等组合情况下会出现找不到路径的或者出现乱码问题。虽然没有官方的具体消息,我想微软早就在较新的系统中已经停止维护这个接口了。
于是我尝试使用第三方库来实现,发现有没有类似的bug,还挺不错的。自己就参考和构建了下接口类。在这里分享一下。
提示:以下是本篇文章正文内容,下面案例可供参考
一、添加动态库
在VS中的工具中添加第三方库,工具->NuGet包管理器->管理解决方案的NuGet程序包-> 搜索ini-parser 。添加后可以在解决方案资源管理器引用中看到库文件的引用。如下图所示:
二、添加接口类代码
- 首先调用接口需要初始化类 FileIniDataParser parser = new FileIniDataParser();
- IniRead通过section和key以及文件路径读取对应Value值,路径可以是相对地址也可以是绝对地址。
- IniWrite则是写文件Value,这里可以看到他是通过先读取后,后重新构建修改内容的方式来写入的。
using IniParser; //第三方库INIFileParser.dll: 工具->NuGet包管理器->管理解决方案的NuGet程序包-> 搜索ini-parser (版本INIFileParser 2.5.2.0)
using IniParser.Model;
using System;namespace ini_parser_test
{class INI_Parser{// 初始化解析器FileIniDataParser parser = new FileIniDataParser();/// <summary>/// 读INI文件/// </summary>/// <param name="section"></param>/// <param name="key"></param>/// <param name="iniFilePath"></param>/// <returns></returns>public string IniRead(string section, string key, string iniFilePath){try{// 读取INI文件 IniData data = parser.ReadFile(iniFilePath);// 获取指定Section的Key值string str = data[$"{section}"][$"{key}"];//为null则返回string.emptyreturn str ?? "";}catch (Exception ex){Console.WriteLine(ex.Message);return "";}}/// <summary>/// 写INI文件/// </summary>/// <param name="section"></param>/// <param name="key"></param>/// <param name="value"></param>/// <param name="iniFilePath"></param>public void IniWrite(string section, string key, string value, string iniFilePath){// 用于存数据先读出IniData data = parser.ReadFile(iniFilePath);// 保存值data[$"{section}"][$"{key}"] = value;// 写入INI文件parser.WriteFile(iniFilePath, data);}}
}
总结
未有持续更新迭代,才能跟上事物发展,通过尝试新的接口发现这个第三方库比之前的旧接口要好用,让我也与时俱进,不断更新迭代更上一层楼吧!