C# 读写自定义的Config文件

一、前言

在软件开发中,经常用到设置这样的功能,如果设置中的功能不多,用 Json、XML 这样的数据结构存储非常的麻烦,一个字段的读写,就要写大量的代码,例如 Json 要写实体类才能进行读写,假设其中一个功能不用,这个字段所有相关的引用都要进行删除和修改,使用 ini 这样的方式,现在几乎没几个人用了,于是我决定用微软自带的Config文件方式。

于是搜索了一下自定义Config文件,发现网上大部分帖子都是读写 “软件名.exe.config” 文件,没什么用,和我设计需求不符合,于是我自己写了一个。

二、添加config文件

可以使用VS自带的添加功能,例如

当然也可以新建一个文本文档,然后改后缀名,再加入内容,都是一样的。

我在软件的根目录里新建了一个Config文件夹,就将配置文件放在这里面了

配置文件的名字,这里可以添加多个配置文件

配置文件内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="COM1" value="我是一个串口号" />
  </appSettings>
</configuration>

三、读写配置文件

我们新建一个 Winform 项目,然后新建一个 ConfigHelper.cs 类,添加 System.Configuration 引用,如果添加不了,就在引用管理器中搜索 System.Configuration,然后就添加到项目中了

using System.Configuration;

internal class ConfigHelper
{
    private string ConfigPath = string.Empty;

    /// <summary>
    /// 获取配置文件指定的Key
    /// </summary>
    /// <param name="key"></param>
    /// <returns></returns>
    public string GetConfigKey(string key)
    {
        Configuration ConfigurationInstance = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap()
        {
            ExeConfigFilename = ConfigPath
        }, ConfigurationUserLevel.None);

        if (ConfigurationInstance.AppSettings.Settings[key] != null)
            return ConfigurationInstance.AppSettings.Settings[key].Value;
        else
            return string.Empty;
    }

    /// <summary>
    /// 设置配置文件指定的Key,如果Key不存在则添加
    /// </summary>
    /// <param name="key"></param>
    /// <param name="vls"></param>
    /// <returns></returns>
    public bool SetConfigKey(string key, string vls)
    {
        try
        {
            Configuration ConfigurationInstance = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap()
            {
                ExeConfigFilename = ConfigPath
            }, ConfigurationUserLevel.None);

            if (ConfigurationInstance.AppSettings.Settings[key] != null)
                ConfigurationInstance.AppSettings.Settings[key].Value = vls;
            else
                ConfigurationInstance.AppSettings.Settings.Add(key, vls);

            ConfigurationInstance.Save(ConfigurationSaveMode.Modified);
            ConfigurationManager.RefreshSection("appSettings");
            return true;
        }
        catch
        {
            return false;
        }
    }

    public ConfigHelper(string configPath)
    {
        ConfigPath = configPath;
    }
}

上面的代码可以看到,我将配置文件的路径参数加入到了ConfigHelper的构造函数中去了,这样假设有个多个配置文件,直接实例化就好了。读写互相不相影响。

Form1 界面中我就添加了一个按钮,没有其他的控件,界面就不展示了,代码如下

using System;
using System.Windows.Forms;
using Utils;

namespace Test2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private ConfigHelper ConfigHelpers = null;

        private void Form1_Load(object sender, EventArgs e)
        {
            string configPath = Application.StartupPath + "\\Config\\SystemInfo.config";
            ConfigHelpers = new ConfigHelper(configPath);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //读取Key
            //string value = ConfigHelpers.GetConfigKey("COM1");
            //Console.WriteLine(value);

            //设置Key
            bool result = ConfigHelpers.SetConfigKey("游戏名", "XX信条");

            Console.WriteLine("执行完毕");
        }
    }
}

读取Key

string value = ConfigHelpers.GetConfigKey("COM1");

 设置Key

bool result = ConfigHelpers.SetConfigKey("游戏名", "XX信条");

结束

如果这个帖子对你有用,欢迎 关注 + 点赞 + 留言,谢谢

end

  • 12
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
c是世界上最为广泛使用的编程语言之一。它的创建人是丹尼斯·里奇,于1972年在贝尔实验室首次发布。C语言是一种低级语言,它允许程序员直接访问与硬件交互的底层功能。 C语言有许多优点,使其成为编程界的重要一员。首先,C语言具有高度的灵活性和可移植性,它可以在多个操作系统和硬件平台上运行。其次,C语言提供了丰富的库函数和标准函数,使得编写代码更加方便快捷。此外,C语言的语法简洁明了,易于学习和理解,对于初学者来说是一个很好的入门语言。最重要的是,C语言能够高效地利用系统资源,运行速度快,具有良好的性能。 C语言广泛应用于嵌入式系统、操作系统、游戏开发、图形处理、网络通信等领域。例如,嵌入式系统使用C语言编写程序来控制硬件设备和处理外部事件。而操作系统的内核也是使用C语言编写的,它提供了许多系统服务和功能。游戏开发中,C语言可以用于编写游戏引擎和游戏逻辑。图形处理方面,C语言的快速运行速度和强大的数学计算能力使其成为处理图像和视频的首选语言。此外,C语言还可以用于网络编程和服务器开发,可以轻松地实现网络通信和处理请求。 尽管C语言有着许多优点,但也有一些缺点。首先,C语言对程序员的编程能力要求较高,需要掌握一定的编程技巧和底层知识。此外,C语言的代码难以维护和调试,容易产生错误。同时,C语言的指针概念较为复杂,初学者可能会感到困惑。 总的来说,C语言是一种功能强大、灵活性高的编程语言,可以广泛应用于各个领域。掌握C语言,能够快速编写高效的代码,是每个程序员必备的基础技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊思宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值