C# 配置文件读取与修改

C# 配置文件读取与修改

配置文件在很多情况下都使用到, 配置文件分为两种 一种是应用程序的配置文件, 一种是web的配置文件.

两种配置文件最大的区别是web的配置文件更新之后会实时更新, 应用程序的配置文件不会实时更新.

更新应用程序的配置文件之后需刷新

ConfigurationManager.RefreshSection("appSettings");// 刷新命名节,在下次检索它时将从磁盘重新读取它。
ConfigurationSettings也存在这个问题, 但是我还不知道怎么刷新节点, 呵呵.

旧方法: 各位看官最好使用下面”新方法”

配置文件:

<configuration>
  <appSettings>
    <add key="name" value="我是远程服务器"/>
  </appSettings>
</configuration>

后台程序值得读取:

string s=System.Configuration.ConfigurationSettings.AppSettings["name"];

修改配置文件的值:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/// <summary>
/// 更新配置文件信息
/// </summary>
/// <param name="name">配置文件字段名称</param>
/// <param name="Xvalue">值</param>
private void UpdateConfig( string name, string Xvalue)
{
     XmlDocument doc = new XmlDocument();
     doc.Load(Application.ExecutablePath + ".config" );
     XmlNode node = doc.SelectSingleNode( @"//add[@key='" +name+ "']" );
     XmlElement ele = (XmlElement)node;
     ele.SetAttribute( "value" , Xvalue);
     doc.Save(Application.ExecutablePath + ".config" );
}

向配置文件插入值:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
///<summary> 
///向.config文件的appKey结写入信息AppValue   保存设置 
///</summary> 
///<param name="AppKey">节点名</param> 
///<param name="AppValue">值</param>
Private void SetValue(String AppKey,String AppValue)
{
     Xmldocument xDoc= new XmlDocument();
     xDoc.Load(System.Windows.Forms.Application.ExecutablePath+”.config”);
     XmlNode xNode;
     XmlElement xElem1;
     XmlElement xElem2;
     xNode=xDoc.SelectSingleNode(“ //appSettings”);
     xElem1=(XmlElement)xNode.SelectSingleNode(“ //add[@key=’”+AppKey+”’]”);
     if (xElem1!= null )
     xElem1.SetAttribute(“value”,AppValue);
     else
     {
         xElem2=xdoc.CreateElement(“add”);
         xElem2.SetAttribute(“key”,AppKey);
         xElem2.setAttribute(“value”,AppValue);
         xNode.AppendChild(xElem2);
     }
     xDoc.Save(System.Windows.Forms.Application.ExecutablePath+”.config”);
}

新方法:

System.Configuration.ConfigurationSettings.AppSettings["Key"];
但是现在FrameWork2.0已经明确表示此属性已经过时。并建议改为ConfigurationManager或WebConfigurationManager。并且AppSettings属性是只读的,并不支持修改属性值.

但是要想调用ConfigurationManager必须要先在工程里添加system.configuration.dll程序集的引用。(在解决方案管理器中右键点击工程名称,在右键菜单中选择添加引用,.net TablePage下即可找到)添加引用后可以用 String str = ConfigurationManager.AppSettings["Key"]来获取对应的值了。

更新配置文件:
Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
//添加

cfa.AppSettings.Settings.Add("key", "Name")

//修改

cfa.AppSettings.Settings["BrowseDir"].Value = "name";

最后调用
cfa.Save();
当前的配置文件更新成功。

ConfigurationManager.RefreshSection("appSettings");// 刷新命名节,在下次检索它时将从磁盘重新读取它。记住应用程序要刷新节点

分类: .Net
13
0
« 上一篇: C#多线程学习 之 线程池[ThreadPool]
» 下一篇: 程序命名标准规范(自定义与其他标准无关)
posted @ 2012-01-31 17:17 hen 阅读( 77658) 评论( 34) 编辑 收藏
  
#1楼 2012-01-31 18:04 为乐而来  
没用过...mark了..
http://pic.cnblogs.com/face/u286958.gif
  
#2楼 2012-01-31 18:44 青松之林  
值得学习的文章。
http://pic.cnblogs.com/face/267400/20160107180445.png
  
#3楼 2012-01-31 19:27 泪奔的老刘  
回头尝试下
  
#4楼 2012-01-31 20:09 通用C#系统架构  
闹心的是,经常写不进去,获取写进去,程序崩溃了,因为配置文件修改了,程序有时候需要重新启动了。
http://pic.cnblogs.com/face/u35584.jpg
  
#5楼 2012-01-31 21:42 柿子贵  
不错,希望楼主再写些有关配置文件相关的博文
http://pic.cnblogs.com/face/88293/20151030093924.png
  
#6楼 2012-02-01 09:16 随风ˇ止步  
足迹留下。
http://pic.cnblogs.com/face/368658/20130719162049.png
  
#7楼 2012-02-01 09:24 祭天  
如果只用 Configuration 的話,就可以不用刷新,用 ConfigurationManager 則需要...
http://pic.cnblogs.com/face/u117834.bmp
  
#8楼 [ 楼主] 2012-02-01 09:25 hen  
@ 祭天
ConfigurationManager 我测试过要的, Configuration 还不知道, 呵呵. 以后我会注意下的. 谢谢
https://i-blog.csdnimg.cn/blog_migrate/ec6a06a81faebcd6c3e5941fcbf41a4a.jpeg
  
#9楼 [ 楼主] 2012-02-01 09:29 hen  
@ 通用权限管理系统组件
我上面写的方法应该都可以写进去哇. 我测试过的
https://i-blog.csdnimg.cn/blog_migrate/ec6a06a81faebcd6c3e5941fcbf41a4a.jpeg
  
#10楼 [ 楼主] 2012-02-01 09:30 hen  
@ 施之贵
配置没几个的, 基本都是这么用. 呵呵. 以后有新的我会在这篇文章上更新不会写新的了. 除非把这篇文章删除了.
https://i-blog.csdnimg.cn/blog_migrate/ec6a06a81faebcd6c3e5941fcbf41a4a.jpeg
  
#11楼 2012-02-01 09:42 jiejiep  
没测试过,不过估计修改以后,程序可能需要重新启动才能更新配置。
http://pic.cnblogs.com/face/u122171.jpg?id=19130923
  
#12楼 2012-02-01 09:46 阿蓝哥  
这样修改要简单多了! 下来再试试!
http://pic.cnblogs.com/face/u58558.jpg
  
#13楼 2012-02-01 10:25 江大渔  
如果是web,这样保存会导致应用程序重启吗?
http://pic.cnblogs.com/face/u7804.jpg?id=24123656
  
#14楼 [ 楼主] 2012-02-01 10:27 hen  
@ 江大鱼
呵呵, web的话本来就是来一个启动一个iis进程的.不会有问题的.
https://i-blog.csdnimg.cn/blog_migrate/ec6a06a81faebcd6c3e5941fcbf41a4a.jpeg
  
#15楼 2012-02-01 10:30 江大渔  
@ hen
我不是说有没有问题。

我是问这样修改web.config和手动修改web.config对应用程序的影响有什么不同。
http://pic.cnblogs.com/face/u7804.jpg?id=24123656
  
#16楼 [ 楼主] 2012-02-01 10:31 hen  
@ 江大鱼
第一个旧的方法没什么不同的
https://i-blog.csdnimg.cn/blog_migrate/ec6a06a81faebcd6c3e5941fcbf41a4a.jpeg
  
#17楼 2012-02-01 10:53 geohot  
没用过 mark 下
  
#18楼 2012-02-01 11:10 龙亿  
已经用了二年多这个办法的人路过下
http://pic.cnblogs.com/face/u43303.png
  
#19楼 2012-02-01 11:11 NetSQL  
两种配置文件最大的区别是web的配置文件更新之后会 时时更新, 应用程序的配置文件不会实时更新.这个倒没注意过。
http://pic.cnblogs.com/face/u16974.png?id=05131219
  
#20楼 [ 楼主] 2012-02-01 11:20 hen  
@ NetSQL
现在知道也不晚, 呵呵 以后要注意了哦
https://i-blog.csdnimg.cn/blog_migrate/ec6a06a81faebcd6c3e5941fcbf41a4a.jpeg
  
#21楼 2012-02-01 11:22 NetSQL  
@ hen
你是要写时时更新,还是要写实时更新


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值