C# 读写自定义的Config文件的实现方法
作者:熊思宇 发布时间:2022-09-08 23:22:35
标签: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信条");
来源:https://blog.csdn.net/qq_38693757/article/details/125549559


猜你喜欢
- 大家是不是平常都有好多文件需要定期备份?如歌曲、视频、文档,代码文件等等,如果经常增加删除修改文件,就需要定期备份,最早之前文件都不大的时候
- mybatis if传入字符串数字踩坑前台页面内容,注意这里的类型为字符串类型的数字<li>  
- 前言我们大多数在两种情况下可以看到悬浮窗,一个是视频通话时的悬浮窗,另一个是360卫士的悬浮球,实现此功能的方式比较多,这里以视频通话悬浮窗
- 本文实例为大家分享了Java实现斗地主的具体代码,供大家参考,具体内容如下import java.util.ArrayList;import
- package com.action.android_test;import android.location.Location;impor
- SpringBoot找不到javax.servlet.Filter的问题新创建一个SpringBoot项目,编译时出现了找不到javax.s
- 最近一年的项目都是在使用Mybatis-plus,感觉挺好用的,也没遇到很多问题,但是在最近项目上线之后,遇到了一些新的需要,在进行新版本开
- 本文为大家分享一个非常简单但又很常用的控件,跑马灯状态的TextView。当要显示的文本长度太长,又不想换行时用它来显示文本,一来可以完全的
- 用 Android studio软件写的一个 * 小游戏先上MainActivity.java 的代码。这里我用得定时器,本想用j
- 自定义starter yaml提示失效问题问题场景在自定义starter后,必不可少会有properties配置参数需要指定,而在有时又不知
- 请停止代码注释“干净的代码应该像写好的散文一样” - Robert C. Martin不良代码的通病就是有很多注释。这是凌乱的源代码最明显的
- 目录1、在运行时,由java解释器自动引入,而不用import语句引入的包是()。2、以下关于集合类ArrayList、LinkedList
- 这篇文章主要介绍了springboot实现文件上传步骤解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 大家好哇,又是我,梦辛工作室的灵,今天来给大家讲解下如何实现 安卓的侧边弹窗,先大概讲下基本原理吧,其实很简单,就是一个进出动效,用 位移
- idea切换分支时,修改过的代码文件全部不见了找了一下问题,切换分支时,idea自动会创建暂存文件,点开,右边View --> 即可显
- 配置文件形式pom.xml<?xml version="1.0" encoding="UTF-8&quo
- PS:本文使用jdk1.7解析1.Object类 的equals 方法 /** &
- 发疯的产品要做一个可以单选和多选的下拉列表,陪你玩玩吧。直接上效果:实现方案:我的思路是自定义一个类继承PopupWindow,里面的选项采
- 前言在使用IDEA2020.2.3版本时,创建web工程遇到了一些问题,经过一番摸索之后得到解决方案。一、新建javaweb工程1.先创建一
- netty心跳机制示例,使用Netty实现心跳机制,使用netty4,IdleStateHandler 实现。Netty心跳机制,netty