C# 读写自定义的Config文件的实现方法

 更新时间:2022年07月22日 09:54:24   作者:熊思宇  
本文主要介绍了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 类

using System.Configuration;
 
namespace Utils
{
    public 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信条");

到此这篇关于C# 读写自定义的Config文件的实现方法的文章就介绍到这了,更多相关C# 读写Config内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解C#之委托

    详解C#之委托

    这篇文章主要介绍了C#委托的含义以及用法,文中代码非常详细,帮助大家更好的理解和学习
    2020-06-06
  • C#利用System.Threading.Thread.Sleep即时输出信息的详解

    C#利用System.Threading.Thread.Sleep即时输出信息的详解

    本篇文章是对C#利用System.Threading.Thread.Sleep即时输出信息进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • C#提取PPT文本和图片的实现方法

    C#提取PPT文本和图片的实现方法

    这篇文章主要为大家详细介绍了C#提取PPT文本和图片的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • C#如何通过T4自动生成代码详解

    C#如何通过T4自动生成代码详解

    这篇文章主要给大家介绍了关于C#如何通过T4自动生成代码的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用c#具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-10-10
  • C#对称加密与非对称加密实例

    C#对称加密与非对称加密实例

    这篇文章主要介绍了C#对称加密与非对称加密实例,详细分析了对称加密与非对称加密的原理与具体实现方法,具有一定的实用价值,需要的朋友可以参考下
    2014-10-10
  • C#中Task.ContinueWith连续任务使用实例

    C#中Task.ContinueWith连续任务使用实例

    本文主要介绍了C#中Task.ContinueWith连续任务使用实例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C#绘制鼠标指针的示例代码

    C#绘制鼠标指针的示例代码

    这篇文章主要为大家详细介绍了如何利用C#实现将鼠标的指针样式给绘制成图片,显示或者保存下来,文中的示例代码讲解详细,需要的可以参考一下
    2024-01-01
  • C#中Web.Config加密与解密的方法

    C#中Web.Config加密与解密的方法

    C#中Web.Config加密与解密的方法,需要的朋友可以参考一下
    2013-04-04
  • WinForm项目开发中WebBrowser用法实例汇总

    WinForm项目开发中WebBrowser用法实例汇总

    这篇文章主要介绍了WinForm项目开发中WebBrowser用法,需要的朋友可以参考下
    2014-08-08
  • C#验证控件validator的简单使用

    C#验证控件validator的简单使用

    这篇文章主要介绍了C#验证控件validator的简单使用方法和示例,十分的简单实用,有需要的小伙伴可以参考下。
    2015-06-06

最新评论