• C# 读写自定义的Config文件


    一、前言

    最近搜索了一下自定义Config文件,发现网上大部分帖子都是读写应用程序exe文件对应的.config文件,如下图,读取自定义的配置文件相关帖子很少。

    在软件开发中,经常用到设置这样的功能,如果属性不多,用Json、XML 这样的来存储非常的麻烦,一个简单的存储,需要写一大堆东西,有可能还要写实体类才能使用,然后某个属性不用,要删除的地方就有好多个,这时候选择微软自带config文件无疑是最佳选择。

    二、添加config文件

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

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

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

     三、读写配置文件

    我们新建一个 Winform 项目,然后新建一个 ConfigHelper.cs 类

    1. using System.Configuration;
    2. namespace Utils
    3. {
    4. public class ConfigHelper
    5. {
    6. private string ConfigPath = string.Empty;
    7. /// <summary>
    8. /// 获取配置文件指定的Key
    9. /// </summary>
    10. /// <param name="key"></param>
    11. /// <returns></returns>
    12. public string GetConfigKey(string key)
    13. {
    14. Configuration ConfigurationInstance = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap()
    15. {
    16. ExeConfigFilename = ConfigPath
    17. }, ConfigurationUserLevel.None);
    18. if (ConfigurationInstance.AppSettings.Settings[key] != null)
    19. return ConfigurationInstance.AppSettings.Settings[key].Value;
    20. else
    21. return string.Empty;
    22. }
    23. /// <summary>
    24. /// 设置配置文件指定的Key,如果Key不存在则添加
    25. /// </summary>
    26. /// <param name="key"></param>
    27. /// <param name="vls"></param>
    28. /// <returns></returns>
    29. public bool SetConfigKey(string key, string vls)
    30. {
    31. try
    32. {
    33. Configuration ConfigurationInstance = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap()
    34. {
    35. ExeConfigFilename = ConfigPath
    36. }, ConfigurationUserLevel.None);
    37. if (ConfigurationInstance.AppSettings.Settings[key] != null)
    38. ConfigurationInstance.AppSettings.Settings[key].Value = vls;
    39. else
    40. ConfigurationInstance.AppSettings.Settings.Add(key, vls);
    41. ConfigurationInstance.Save(ConfigurationSaveMode.Modified);
    42. ConfigurationManager.RefreshSection("appSettings");
    43. return true;
    44. }
    45. catch
    46. {
    47. return false;
    48. }
    49. }
    50. public ConfigHelper(string configPath)
    51. {
    52. ConfigPath = configPath;
    53. }
    54. }
    55. }

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

    1. using System;
    2. using System.Windows.Forms;
    3. using Utils;
    4. namespace Test2
    5. {
    6. public partial class Form1 : Form
    7. {
    8. public Form1()
    9. {
    10. InitializeComponent();
    11. }
    12. private ConfigHelper ConfigHelpers = null;
    13. private void Form1_Load(object sender, EventArgs e)
    14. {
    15. string configPath = Application.StartupPath + "\\Config\\SystemInfo.config";
    16. ConfigHelpers = new ConfigHelper(configPath);
    17. }
    18. private void button1_Click(object sender, EventArgs e)
    19. {
    20. //读取Key
    21. //string value = ConfigHelpers.GetKey("COM1");
    22. //Console.WriteLine(value);
    23. //设置Key
    24. bool result = ConfigHelpers.SetConfigKey("游戏名", "XX信条");
    25. Console.WriteLine("执行完毕");
    26. }
    27. }
    28. }

    读取Key

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

     设置Key

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

    这里我用的是实例化进行读取,如果你有多少个配置文件,就实例化多少个类,然后调用读写,就这么简单。

    结束

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

    end

  • 相关阅读:
    P1019 [NOIP2000 提高组] 单词接龙——dfs
    iOS——UIColor与CGColor与CALayer
    基于STM32设计的智能货架(华为云IOT)(225)
    MySQL报错:json_contains: “The document is empty.“ at position 0.
    智能制造云办公 v3.8.10 发布,团队管理更新
    windows cmd设置代理
    SpringMVC自定义视图解析器
    PowerDesigner 与 mysql 同步数据
    latex安装与使用
    springboot整合knife4j,从此告别手写接口文档
  • 原文地址:https://blog.csdn.net/qq_38693757/article/details/125549559