.NET配置文件读写实例(附SosoftConfigHelper类)
配置文件在软件开发中起到举足轻重的作用,可以说不可或缺。.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类)相关推荐
- C#共享内存实例 附源码
原文 C#共享内存实例 附源码 网上有C#共享内存类,不过功能太简单了,并且写内存每次都从开头写.故对此进行了改进,并做了个小例子,供需要的人参考. 主要改进点: 通过利用共享内存的一部分空间(以下称 ...
- .NET平台开源项目速览(1)SharpConfig配置文件读写组件
原文:.NET平台开源项目速览(1)SharpConfig配置文件读写组件 在.NET平台日常开发中,读取配置文件是一个很常见的需求.以前都是使用System.Configuration.Config ...
- xml编辑 html_【c# .net】Xml读写操作(XmlTextReader 类)
Xml读写操作(XmlTextReader 类) 1.XML简介 1)XML 和 HTML 的设计初衷 XML 被设计用来传输和存储数据 HTML 被设计用来显示数据 2)什么是 XML? XML 指 ...
- C# 多种方式发送邮件(附帮助类)
因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱try{MailMessage mail = new MailMessage ...
- java读写excel文件poi_Java利用POI读写Excel文件工具类
本文实例为大家分享了Java读写Excel文件工具类的具体代码,供大家参考,具体内容如下 package com.test.app.utils; import java.io.File; import ...
- java 读取配置文件工具_java读取配置文件信息properties的工具类
java读取配置文件信息properties的工具类,介绍一个工具PropertyReader.java,读取项目配置文件信息 package mymail; import java.io.File; ...
- VB 二进制数据读写实例
代码如下: Dim arrBinary() As Byte Open "C:\123.exe" For Binary As #1 ReDim arrBinary(LOF(1) - ...
- 利用 yaml-cpp 开源库读写 yaml 配置文件—— 读写部分
利用 yaml-cpp 开源库读写 yaml 配置文件-- 读写部分 YAML文件解析 Node 读写yaml文件 config.yaml内容 test_yaml.cpp文件内容 重要内容简单解释 n ...
- 四、EasyExcel实现Excel读写,封装工具类
在项目中,我们经常用到EasyExcel框架实现:对Excel文件的读写操作.为了方便后续其他项目中的使用,将对Excel文件的读写操作,封装成工具类. 一.EasyExcel实现Excel读写,封装 ...
最新文章
- [JZOJ6075]【GDOI2019模拟2019.3.20】桥【DP】【线段树】
- 【Groovy】闭包 Closure ( 闭包类 Closure 简介 | 闭包 parameterTypes 和 maximumNumberOfParameters 成员用法 )
- 【转】ssh服务器启动和客户端常用操作
- ITK:计算曲率各向异性扩散
- 小阳买水果(前缀和,单调栈,思维)
- 编写并运行windows服务
- 微信小程序正则判断姓名和手机号
- java界面化二叉排序树_105-线索化二叉树代码实现2
- java restful中文乱码_使用RestTemplate访问RESTful服务乱码处理
- oracle监听程序无法分配,oracleORA-12520:TNS:监听程序无法为请求的服务器类型找到可用的处理程序的问题...
- 技巧篇-图层叠加之美(一)
- 排序算法--直接插入排序
- JS_原生js实现60秒倒计时
- 黄褐斑激光-百花净斑方
- string.h头文件的简单运用
- CGT Asia 2022第二届亚洲细胞与基因治疗创新峰会将于2022年7月10日-111日在上海举办
- 常用Linux操作系统的发展历史
- 王家林最受欢迎的一站式云计算大数据和移动互联网解决方案课程 V1之Android架构设计和实现完整训练:HALFrameworkNative ServiceAndroid ServiceBes
- 微型计算机系统原理及应用实验,微型计算机系统原理及应用实验报告 .doc
- 查看windows8激活状态
热门文章
- ironpython console怎么用_如何在表單中插入ironpython控制台?
- 怎么将翼型导入catia_CATIA导入翼型出现了问题,翼型是在网上找的。说是样条线运算有问题 - 机械 - 小木虫 - 学术 科研 互动社区...
- 客制化键盘编程_客制化键盘如何入坑?
- mysql报错级别_MySQL启动出现几个警告级别错误
- c语言之优先级 结合性与自增运算,C语言之优先级、结合性与自增运算
- 用友邮件撤回怎么操作_用户体验原则——“操作可控”
- 家用计算机机箱怎么选,DIY装机怎么选择电脑机箱 新手必读的电脑主机箱选购指南...
- liunx php的项目地址,在 Linux 配置 PHP 项目
- set和map去重调用什么方法_【ES6】Set、Map
- jmeter 高并发测试报告_JMeter分布式测试