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");// 刷新命名节,在下次检索它时将从磁盘重新读取它。记住应用程序要刷新节点
1. 配置文件概述:
应 用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的。它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序。配置文件的根节点是 configuration。我们经常访问的是appSettings,它是由.Net预定义配置节。我们经常使用的配置文件的架构是象下面的形式。先大 概有个印象,通过后面的实例会有一个比较清楚的认识。下面的“配置节”可以理解为进行配置一个XML的节点。 常见配置文件模式: <configuration> 2. 只有appSettings节的配置文件及访问方法 下面是一个最常见的应用程序配置文件的例子,只有appSettings节。 <?xml version="1.0" encoding="utf-8"?> 下面来看看这样的配置文件如何方法。 string _connectionString=ConfigurationSettings.AppSettings["connectionstring"]; 使用ConfigurationSettings类的静态属性AppSettings就可以直接方法配置文件中的配置信息。这个属性的类型是NameValueCollection。 3. 自定义配置文件 一个用户自定义的配置节,在配置文件中分为两部分:一是在<configSections></ configSections>配置节中声明配置节(上面配置文件模式中的“<section>”),另外是在< configSections></ configSections >之后设置配置节(上面配置文件模式中的“<Custom element for configuration section>”),有点类似一个变量先声明,后使用一样。声明一个配置文件的语句如下: <section name=" " type=" "/> name:自定义配置节的名称。 type:自定义配置节的类型,主要包括System.Configuration.SingleTagSectionHandler、 System.Configuration.DictionarySectionHandler、 System.Configuration.NameValueSectionHandler。 不同的type不但设置配置节的方式不一样,最后访问配置文件的操作上也有差异。下面我们就举一个配置文件的例子,让它包含这三个不同的type。 <?xml version="1.0" encoding="utf-8" ?> 我们对上面的自定义配置节进行说明。在声明部分使用<section name="Test1" type="System.Configuration.SingleTagSectionHandler"/>声明了一个配置节它的名字叫 Test1,类型为SingleTagSectionHandler。在设置配置节部分使用 <Test1 setting1="Hello" setting2="World"/>设置了一个配置节,它的第一个设置的值是Hello,第二个值是World,当然还可以有更多。其它的两个配 置节和这个类似。 public static object GetConfig(string sectionName); 下面是访问这三个配置节的代码: //访问配置节Test1 //访问配置节Test1的方法2 通过上面的代码我们可以看出,不同的type通过GetConfig返回的类型不同,具体获得配置内容的方式也不一样。 配置节处理程序 SingleTagSectionHandler DictionarySectionHandler NameValueSectionHandler 3.2 自定义配置节组 <?xml version="1.0" encoding="utf-8" ?> |
C# 配置文件读取与修改(转)的更多相关文章
- C# 配置文件读取与修改
C# 配置文件读取与修改 配置文件在很多情况下都使用到, 配置文件分为两种 一种是应用程序的配置文件, 一种是web的配置文件. 两种配置文件最大的区别是web的配置文件更新之后会实时更新, 应用 ...
- python-文件操作练习-配置文件读取、修改、删除
文件操作练习:http://www.cnblogs.com/wupeiqi/articles/4950799.html global log 127.0.0.1 local2 daemon maxco ...
- VS2012中,C# 配置文件读取 + C#多个工程共享共有变量 + 整理using语句
(一) C# 配置文件读取 C#工程可以自动生成配置文件,以便整个工程可以使用设置的配置进行后续的处理工作. 1. 首先,右键工程文件-->Properties -->settings-- ...
- C#项目实例中读取并修改App.config文件
C#项目是指一系列独特的.复杂的并相互关联的活动,这些活动有着一个明确的目标或目的,必须在特定的时间.预算.资源限定内,依据规范完成.项目参数包括项目范围.质量.成本.时间.资源. 1. 向C#项目实 ...
- xp默认安装路径及本地用户配置文件存放路径修改
xp默认安装路径及本地用户配置文件存放路径修改 修改注册表可能会造成您的系统崩溃或数据丢失,请先行备份操作系统,以备不测!!! 备份注册表步骤: 1.在“桌面”上按快捷键“Ctrl+R”,调出“运行” ...
- smarty 从配置文件读取变量
smarty变量分3种: Variables [变量] Variables assigned from PHP [从PHP分配的变量] Variables loaded from config fil ...
- .Net Core配置文件读取整理
一 .配置文件说明 1.配置,主要是 指在程序中使用的一些特殊参数,并且大多数 仅在程序启动的之后指定不需要修改. 2.在以前.Net项目中配置文件主要指app.config或web.config,但 ...
- cocos2d-x开发: 一切应该从配置文件读取开始
想要做一款完整的游戏,应该从配置文件读取开始.cocos2d-x本身提供了UserDefault来操作xml格式的配置文件,准确的说配置这模块引擎开发者已经考虑到了.但是xml格式包含大量无关的格式信 ...
- WPF C#之读取并修改App.config文件
原文:WPF C#之读取并修改App.config文件 简单介绍App.config App.config文件一般是存放数据库连接字符串的. 下面来简单介绍一下App.config文件的修改和更新. ...
随机推荐
- 不用预计算切向空间的Normal mapping
先贴出shader 吧 等有时间了 来阐述原理 // vertex shader //varying vec3 ViewPosition; //varying vec3 Normal; varying ...
- [Android] 获取音频输出getOutput
每创建一个AudioTrack,代表需要新增一个输出实例,即需要根据音频流的的stream type,音频流的音轨数量,采样率,位宽等数据来重新构建buffer,而且输出的设备也可能会有变化,由于An ...
- keil中使用_at_绝对地址定位
使用_at_关键字对存储器进行绝对地址定位程序如下: #include<reg51.h> ] _at_ 0x8000; main() { LED_Data[] = 0x23; } 在kei ...
- 2014-08-29 Last Day
今天实在吾索实习的第38天,也是这个暑假在吾索实习的最后一天. 这天里,并有做过多的新知识的学习,而是对先前的BBS系统进行优化,从外观的优化到每一行每一句代码的优化,希望能系统有更高的效率.虽说,暑 ...
- linux使用mount挂载iso文件
mount -t iso9660 -o loop /home/user/XXX.iso /mnt/iso
- Java集合中那些类是线程安全的
线程安全类 在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的.在jdk1.2之后,就出现许许多多非线程安全的类. 下面是这些线程安全的同步的类: vector:就比arraylist多 ...
- 新建maven工程时pom.xml报错
新建maven工程时,pom.xml报错:第一行报如下错误:multiple annotations found at this line后添加org.eclipse.m2e相关的plugin配置后, ...
- VS2008LINK : fatal error LNK1000: Internal error during IncrBuildImage
修改链接选项,方法:项目->属性->链接器->常规 下面的“启用增量链接”,将“是(/INCREMENTAL)”改为“否(/INCREMENTAL:NO)”,然后确定就可以了.
- [Javascript] Add a browser build to an npm module
In this lesson, we're going to use webpack to create a UMD (Universal Module Definition) build of ou ...
- android Json解析详解
JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语 言的支持),从而可以在不同平台间进行数 ...