博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 配置文件读取与修改
阅读量:5994 次
发布时间:2019-06-20

本文共 2539 字,大约阅读时间需要 8 分钟。

 

配置文件在很多情况下都使用到, 配置文件分为两种 一种是应用程序的配置文件, 一种是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");// 刷新命名节,在下次检索它时将从磁盘重新读取它。记住应用程序要刷新节点

转载于:https://www.cnblogs.com/zhangxin1989/archive/2012/08/24/2653933.html

你可能感兴趣的文章
lduan server 2012 系统批量激活(三十二)
查看>>
自定义key解决zabbix端口监听取值不准确的问题
查看>>
我的友情链接
查看>>
进击的***打破苹果资安之墙,巨人来自土耳其?
查看>>
java --枚举
查看>>
文件操作:fseek()
查看>>
笔试题集锦
查看>>
ssh密钥认证原理
查看>>
第十七课 vim工具的一般模式
查看>>
malloc和free的实现原理
查看>>
用MyEclipse JPA创建项目(二)
查看>>
javaweb学习总结(四)——Http协议
查看>>
javaweb学习总结(十八)——JSP属性范围
查看>>
UIWindow 单例使用
查看>>
Linux 操作命令 df
查看>>
JS判断坐标点是否在给定的多边形内
查看>>
21.这个看起来有点简单
查看>>
28BYJ-48步进电机道理
查看>>
C++重载运算符
查看>>
Spring的理解
查看>>