.Net配置文件读取及修改方法封装(未加密)
.Net平台下开发时,需要将有些数据存储在XML文档中,而我们的首选即是默认新建的app.Config了。新建流程如下:
第一步:在启动工程上右键->添加->新建项。如下图:
第二步:新建配置文件,修改名称,切记要将默认的App1.config修改为App.config,因为默认寻找的配置文件名称是App.config。如果不改名称将找不到,如下图:
第三步:添加相应的connectionStrings和appSettings,如下图:
那么至此,我们的配置文件已经创建好了。那么创建好的配置文件是方便我们使用的,不管是我们读取配置文件中的值还是我们要修改配置文件中的有些配置项。当系统交付客户时,不能每次直接让客户操作配置,更何况一般配置文件都是要加密的。所以我在其他博客园找了一些封装好的方法可供参考:
代码如下:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Configuration; 6 7 namespace WPFControlsDemo.Control 8 { 9 /// <summary> 10 /// 配置文件帮助类 11 /// </summary> 12 public class ConfigHelper 13 { 14 #region ConnectionStrings 15 16 /// <summary> 17 /// 根据连接串名字connectionName返回数据连接字符串 18 /// </summary> 19 /// <param name="connectionName">连接串名字</param> 20 /// <returns>数据连接字符串</returns> 21 private static string GetConnectionStringsConfig(string connectionName) 22 { 23 string connectionString = ConfigurationManager.ConnectionStrings[connectionName].ToString(); 24 return connectionString; 25 } 26 27 /// <summary> 28 /// 更新连接字符串 29 /// </summary> 30 /// <param name="newName">连接字符串名称</param> 31 /// <param name="newConString">连接字符串内容</param> 32 /// <param name="newProviderName">数据提供程序名称</param> 33 private static void UpdateConnectionStringConfig(string newName, string newConString, string newProviderName) 34 { 35 //记录该连接字符串是否已经存在 36 bool isModified = false; 37 //如果要更改的连接字符串已经存在 38 if (ConfigurationManager.ConnectionStrings[newName] != null) 39 { 40 isModified = true; 41 } 42 43 //新建一个连接字符串实例 44 ConnectionStringSettings mySettings = new ConnectionStringSettings(newName, newConString, newProviderName); 45 Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 46 47 //如果连接串已存在,首先删除它 48 if (isModified) 49 { 50 config.ConnectionStrings.ConnectionStrings.Remove(newName); 51 } 52 //将新的连接串添加到配置文件 53 config.ConnectionStrings.ConnectionStrings.Add(mySettings); 54 //保存对配置文件所做的更改 55 config.Save(ConfigurationSaveMode.Modified); 56 //强制重新载入配置文件的ConnectionStrings配置节 57 ConfigurationManager.RefreshSection("ConnectionStrings"); 58 } 59 60 #endregion 61 62 #region AppStrings 63 64 /// <summary> 65 /// 返回config文件中的appSettings配置节的value项 66 /// </summary> 67 /// <param name="strKey">appSettings配置节关键字</param> 68 /// <returns>APPSettings配置节值</returns> 69 private static string GetAppConfig(string strKey) 70 { 71 foreach (string key in ConfigurationManager.AppSettings) 72 { 73 if (key == strKey) 74 { 75 return ConfigurationManager.AppSettings[strKey]; 76 } 77 } 78 79 return null; 80 } 81 82 /// <summary> 83 /// 在config文件中appSettings配置节增加一对键,值对 84 /// </summary> 85 /// <param name="newKey"></param> 86 /// <param name="newValue"></param> 87 private static void UpdateAppConfig(string newKey, string newValue) 88 { 89 bool isModified = false; 90 foreach (string key in ConfigurationManager.AppSettings) 91 { 92 if (key == newKey) 93 { 94 isModified = true; 95 } 96 } 97 //打开配置文件 98 Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 99 //删除已存在的节点 100 if (isModified) 101 { 102 config.AppSettings.Settings.Remove(newKey); 103 } 104 //增加appSettings节点 105 config.AppSettings.Settings.Add(newKey, newValue); 106 //保存配置文件 107 config.Save(ConfigurationSaveMode.Modified); 108 //强制刷新 109 ConfigurationManager.RefreshSection("appSettings"); 110 } 111 112 #endregion 113 } 114 }
灵感+实践