配置文件在软件开发中起到举足轻重的作用,可以说不可或缺。.NET程序可使用.config文件作为配置文件,例如WinForm程序的*.app.config、Web程序的web.config。.config文件是标准的XML文件。本实例可读取、修改和添加app.confing或者web.config文件的appSettings。SosoftConfigHelper类还可以读写ConnectionStrings。

使用Visual Studio创建一个WinForm项目,在窗体上建立控件,如图:

键值列表中的值是运行结果。

然后在更新配置按钮事件方法中加入如下代码:

SosoftConfigHelper.UpdateAppConfig(textBox_key.Text, textBox_value.Text);

窗体的代码如下:

/*
Copyright (c) 2012  柔城  All rights reserved.* * sosoft.cnblogs.com*/
using System;
using System.Configuration;
using System.Windows.Forms;
using Sosoft.Cnblogs.Com.Helper;namespace Sosoft.Cnblogs.Com
{public partial class MainForm : Form{public MainForm(){InitializeComponent();}private void button_update_Click(object sender, EventArgs e){SosoftConfigHelper.UpdateAppConfig(textBox_key.Text, textBox_value.Text);GetKeyValueList();}private void GetKeyValueList(){textBox_keyValueList.Text = string.Empty;foreach (string key in ConfigurationManager.AppSettings){textBox_keyValueList.Text += key + " : " + SosoftConfigHelper.GetAppConfig(key) + "\r\n";}}private void MainForm_Load(object sender, EventArgs e){GetKeyValueList();}}
}

记得要添加System.Configuration命名空间和程序集的引用。

另外新建一个类,命名SosoftConfigHelper.cs,这是配置文件读写类,代码如下:

  1 /*
  2 Copyright (c) 2012  柔城  All rights reserved.
  3  *
  4  * sosoft.cnblogs.com
  5  */
  6 using System;
  7 using System.Configuration;
  8
  9 namespace Sosoft.Cnblogs.Com.Helper
 10 {
 11     /// <summary>
 12     /// Sosoft配置文件辅助类
 13     /// </summary>
 14     public class SosoftConfigHelper
 15     {
 16         /// <summary>
 17         ///  读取appStrings配置节, 返回*.exe.config文件中appSettings配置节的value项
 18         /// </summary>
 19         /// <param name="strKey"></param>
 20         /// <returns></returns>
 21         public static string GetAppConfig(string strKey)
 22         {
 23             foreach (string key in ConfigurationManager.AppSettings)
 24             {
 25                 if (key == strKey)
 26                 {
 27                     return ConfigurationManager.AppSettings[strKey];
 28                 }
 29             }
 30             return null;
 31         }
 32
 33
 34         /// <summary>
 35         /// 更新appStrings配置节,在*.exe.config文件中appSettings配置节增加一对键、值对
 36         /// </summary>
 37         /// <param name="newKey"></param>
 38         /// <param name="newValue"></param>
 39         public static void UpdateAppConfig(string newKey, string newValue)
 40         {
 41             bool isModified = false;
 42             foreach (string key in ConfigurationManager.AppSettings)
 43             {
 44                 if (key == newKey)
 45                 {
 46                     isModified = true;
 47                 }
 48             }
 49
 50             // Open App.Config of executable
 51             Configuration config =
 52                 ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
 53             // You need to remove the old settings object before you can replace it
 54             if (isModified)
 55             {
 56                 config.AppSettings.Settings.Remove(newKey);
 57             }
 58             // Add an Application Setting.
 59             config.AppSettings.Settings.Add(newKey, newValue);
 60             // Save the changes in App.config file.
 61             config.Save(ConfigurationSaveMode.Modified);
 62             // Force a reload of a changed section.
 63             ConfigurationManager.RefreshSection("appSettings");
 64         }
 65
 66
 67
 68         /// <summary>
 69         /// 读取connectionStrings配置节,依据连接串名字connectionName返回数据连接字符串
 70         /// </summary>
 71         /// <param name="connectionName"></param>
 72         /// <returns></returns>
 73         public static string GetConnectionStringsConfig(string connectionName)
 74         {
 75             string connectionString =
 76                     ConfigurationManager.ConnectionStrings[connectionName].ConnectionString.ToString();
 77             Console.WriteLine(connectionString);
 78             return connectionString;
 79         }
 80
 81
 82         /// <summary>
 83         /// 更新connectionStrings配置节, 更新连接字符串
 84         /// </summary>
 85         /// <param name="newName"> 连接字符串名称 </param>
 86         /// <param name="newConString"> 连接字符串内容 </param>
 87         /// <param name="newProviderName"> 数据提供程序名称 </param>
 88         public static void UpdateConnectionStringsConfig(string newName,
 89             string newConString,
 90             string newProviderName)
 91         {
 92             bool isModified = false;    // 记录该连接串是否已经存在
 93             // 如果要更改的连接串已经存在
 94             if (ConfigurationManager.ConnectionStrings[newName] != null)
 95             {
 96                 isModified = true;
 97             }
 98             // 新建一个连接字符串实例
 99             ConnectionStringSettings mySettings =
100                 new ConnectionStringSettings(newName, newConString, newProviderName);
101             // 打开可执行的配置文件*.exe.config
102             Configuration config =
103                 ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
104             // 如果连接串已存在,首先删除它
105             if (isModified)
106             {
107                 config.ConnectionStrings.ConnectionStrings.Remove(newName);
108             }
109             // 将新的连接串添加到配置文件中.
110             config.ConnectionStrings.ConnectionStrings.Add(mySettings);
111             // 保存对配置文件所作的更改
112             config.Save(ConfigurationSaveMode.Modified);
113             // 强制重新载入配置文件的ConnectionStrings配置节
114             ConfigurationManager.RefreshSection("ConnectionStrings");
115         }
116     }
117 }

最后右击项目选择“添加-新建项”,然后选择“应用程序配置文件”,点击添加按钮就创建配置文件app.config。

app.config的格式如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration><appSettings><add key="SosoftKey" value="sosoftValue" /><add key="SosoftURL" value="sosoft.cnblogs.com" /><add key="SosoftProject" value="sosoft.codeplex.com" /></appSettings>
</configuration>

按F5运行,可以添加、修改appSettings配置项和列出所有appSettings配置项。

柔城配置文件读写实例源代码下载地址:http://files.cnblogs.com/sosoft/SosoftConfig.rar

.NET配置文件读写实例(附SosoftConfigHelper类)相关推荐

  1. C#共享内存实例 附源码

    原文 C#共享内存实例 附源码 网上有C#共享内存类,不过功能太简单了,并且写内存每次都从开头写.故对此进行了改进,并做了个小例子,供需要的人参考. 主要改进点: 通过利用共享内存的一部分空间(以下称 ...

  2. .NET平台开源项目速览(1)SharpConfig配置文件读写组件

    原文:.NET平台开源项目速览(1)SharpConfig配置文件读写组件 在.NET平台日常开发中,读取配置文件是一个很常见的需求.以前都是使用System.Configuration.Config ...

  3. xml编辑 html_【c# .net】Xml读写操作(XmlTextReader 类)

    Xml读写操作(XmlTextReader 类) 1.XML简介 1)XML 和 HTML 的设计初衷 XML 被设计用来传输和存储数据 HTML 被设计用来显示数据 2)什么是 XML? XML 指 ...

  4. C# 多种方式发送邮件(附帮助类)

    因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱try{MailMessage mail = new MailMessage ...

  5. java读写excel文件poi_Java利用POI读写Excel文件工具类

    本文实例为大家分享了Java读写Excel文件工具类的具体代码,供大家参考,具体内容如下 package com.test.app.utils; import java.io.File; import ...

  6. java 读取配置文件工具_java读取配置文件信息properties的工具类

    java读取配置文件信息properties的工具类,介绍一个工具PropertyReader.java,读取项目配置文件信息 package mymail; import java.io.File; ...

  7. VB 二进制数据读写实例

    代码如下: Dim arrBinary() As Byte Open "C:\123.exe" For Binary As #1 ReDim arrBinary(LOF(1) - ...

  8. 利用 yaml-cpp 开源库读写 yaml 配置文件—— 读写部分

    利用 yaml-cpp 开源库读写 yaml 配置文件-- 读写部分 YAML文件解析 Node 读写yaml文件 config.yaml内容 test_yaml.cpp文件内容 重要内容简单解释 n ...

  9. 四、EasyExcel实现Excel读写,封装工具类

    在项目中,我们经常用到EasyExcel框架实现:对Excel文件的读写操作.为了方便后续其他项目中的使用,将对Excel文件的读写操作,封装成工具类. 一.EasyExcel实现Excel读写,封装 ...

最新文章

  1. [JZOJ6075]【GDOI2019模拟2019.3.20】桥【DP】【线段树】
  2. 【Groovy】闭包 Closure ( 闭包类 Closure 简介 | 闭包 parameterTypes 和 maximumNumberOfParameters 成员用法 )
  3. 【转】ssh服务器启动和客户端常用操作
  4. ITK:计算曲率各向异性扩散
  5. 小阳买水果(前缀和,单调栈,思维)
  6. 编写并运行windows服务
  7. 微信小程序正则判断姓名和手机号
  8. java界面化二叉排序树_105-线索化二叉树代码实现2
  9. java restful中文乱码_使用RestTemplate访问RESTful服务乱码处理
  10. oracle监听程序无法分配,oracleORA-12520:TNS:监听程序无法为请求的服务器类型找到可用的处理程序的问题...
  11. 技巧篇-图层叠加之美(一)
  12. 排序算法--直接插入排序
  13. JS_原生js实现60秒倒计时
  14. 黄褐斑激光-百花净斑方
  15. string.h头文件的简单运用
  16. CGT Asia 2022第二届亚洲细胞与基因治疗创新峰会将于2022年7月10日-111日在上海举办
  17. 常用Linux操作系统的发展历史
  18. 王家林最受欢迎的一站式云计算大数据和移动互联网解决方案课程 V1之Android架构设计和实现完整训练:HALFrameworkNative ServiceAndroid ServiceBes
  19. 微型计算机系统原理及应用实验,微型计算机系统原理及应用实验报告 .doc
  20. 查看windows8激活状态

热门文章

  1. ironpython console怎么用_如何在表單中插入ironpython控制台?
  2. 怎么将翼型导入catia_CATIA导入翼型出现了问题,翼型是在网上找的。说是样条线运算有问题 - 机械 - 小木虫 - 学术 科研 互动社区...
  3. 客制化键盘编程_客制化键盘如何入坑?
  4. mysql报错级别_MySQL启动出现几个警告级别错误
  5. c语言之优先级 结合性与自增运算,C语言之优先级、结合性与自增运算
  6. 用友邮件撤回怎么操作_用户体验原则——“操作可控”
  7. 家用计算机机箱怎么选,DIY装机怎么选择电脑机箱 新手必读的电脑主机箱选购指南...
  8. liunx php的项目地址,在 Linux 配置 PHP 项目
  9. set和map去重调用什么方法_【ES6】Set、Map
  10. jmeter 高并发测试报告_JMeter分布式测试