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");// 刷新命名节,在下次检索它时将从磁盘重新读取它。记住应用程序要刷新节点

C# 配置文件读取与修改的更多相关文章

  1. C# 配置文件读取与修改(转)

    C# 配置文件读取与修改   配置文件在很多情况下都使用到, 配置文件分为两种 一种是应用程序的配置文件, 一种是web的配置文件. 两种配置文件最大的区别是web的配置文件更新之后会实时更新, 应用 ...

  2. python-文件操作练习-配置文件读取、修改、删除

    文件操作练习:http://www.cnblogs.com/wupeiqi/articles/4950799.html global log 127.0.0.1 local2 daemon maxco ...

  3. VS2012中,C# 配置文件读取 + C#多个工程共享共有变量 + 整理using语句

    (一) C# 配置文件读取 C#工程可以自动生成配置文件,以便整个工程可以使用设置的配置进行后续的处理工作. 1. 首先,右键工程文件-->Properties -->settings-- ...

  4. C#项目实例中读取并修改App.config文件

    C#项目是指一系列独特的.复杂的并相互关联的活动,这些活动有着一个明确的目标或目的,必须在特定的时间.预算.资源限定内,依据规范完成.项目参数包括项目范围.质量.成本.时间.资源. 1. 向C#项目实 ...

  5. xp默认安装路径及本地用户配置文件存放路径修改

    xp默认安装路径及本地用户配置文件存放路径修改 修改注册表可能会造成您的系统崩溃或数据丢失,请先行备份操作系统,以备不测!!! 备份注册表步骤: 1.在“桌面”上按快捷键“Ctrl+R”,调出“运行” ...

  6. smarty 从配置文件读取变量

    smarty变量分3种: Variables [变量] Variables assigned from PHP [从PHP分配的变量] Variables loaded from config fil ...

  7. .Net Core配置文件读取整理

    一 .配置文件说明 1.配置,主要是 指在程序中使用的一些特殊参数,并且大多数 仅在程序启动的之后指定不需要修改. 2.在以前.Net项目中配置文件主要指app.config或web.config,但 ...

  8. cocos2d-x开发: 一切应该从配置文件读取开始

    想要做一款完整的游戏,应该从配置文件读取开始.cocos2d-x本身提供了UserDefault来操作xml格式的配置文件,准确的说配置这模块引擎开发者已经考虑到了.但是xml格式包含大量无关的格式信 ...

  9. WPF C#之读取并修改App.config文件

    原文:WPF C#之读取并修改App.config文件 简单介绍App.config App.config文件一般是存放数据库连接字符串的.  下面来简单介绍一下App.config文件的修改和更新. ...

随机推荐

  1. 异步非阻塞IO的Python Web框架--Tornado

    Tornado的全称是Torado Web Server,从名字上就可知它可用作Web服务器,但同时它也是一个Python Web的开发框架.最初是在FriendFeed公司的网站上使用,FaceBo ...

  2. 我对TCP CDG拥塞控制算法的改进和优化

    其实这不是我的优化,我是借用了BBR之力.         借了什么力呢?这是我一再强调的,BBR最大的共享不是为Linux贡献了一个TCP拥塞控制算法(它同时在也BSD上被实现...),而是它重构了 ...

  3. 推荐一个优秀的前端框架——Bootstrap

    Bootstrap是Twitter推出的一个开源的用于前端开发的工具包.它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架.Bootstra ...

  4. ECshop网点程序优化-自动生成类目页Keywords、Desciption Meta

    ECshop支持针对每个新建的类目自定义Keywords.Description Meta信息,好处就不用说了,帮助SEO或者让浏览者了解这是什么页面,但如果有几百个类目的时候,人工去写这些类目又有点 ...

  5. RS232与RS485时序分析

    转载于:RS232,RS485波形分析 经常遇到初学者,对单片机串行通讯出了问题不知道如何办的情况.其实最有效的调试方法是用示波器观察收发数据的波形.通过观察波形可以确定以下情况: 是否有数据接收或发 ...

  6. 产生一个长度为100的int数组,并向其中随机插入1-100,不能重复

    ]; ArrayList myList=new ArrayList(); Random rnd=new Random(); ) { ,); if(!myList.Contains(num)) myLi ...

  7. 仿今日头条最强顶部导航指示器,支持6种模式-b

    项目中经常会用到类似今日头条中顶部的导航指示器,我也经常用一个类似的库PagerSlidingTabStrip,但是有时并不能小伙伴们的所有需求,所以我在这个类的基础上就所有能用到的情况做了一个简单的 ...

  8. Bootstrap简易使用指南

    1.框架 1.1全局样式 使用HTML5的doctype,scaffolding.less中定义全局样式,从2开始使用normalize.css,并使用reset.less进行简化 1.2默认栅格系统 ...

  9. Linux下配置jdk1.7

    第一步:下载jdk-7-linux-i586.tar.gz wget -c http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586 ...

  10. 备忘·添加SublimeText3右键菜单

    因为用的sublimeText3是免安装版,打开未关联文件,略有麻烦,所以搜了一下,发现几种解决办法,其中INF文件的方法很喜欢,备份下 [Version] Signature="$Wind ...