C# 通过第三方库INIFileParser管理INI配置文件

发布于:2025-08-11 ⋅ 阅读:(19) ⋅ 点赞:(0)

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.empty
				return 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);
        }
    }
}

总结

未有持续更新迭代,才能跟上事物发展,通过尝试新的接口发现这个第三方库比之前的旧接口要好用,让我也与时俱进,不断更新迭代更上一层楼吧!


网站公告

今日签到

点亮在社区的每一天
去签到