zoukankan      html  css  js  c++  java
  • C# 配置文件读取与修改

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

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

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

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

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

    配置文件:

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

    后台程序值得读取:

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

    修改配置文件的值:

    /// <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");
    }

    向配置文件插入值:

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

  • 相关阅读:
    输入重定向,输出重定向,管道相关内容及实现方法
    真正理解linux的inode?
    5分钟让你明白“软链接”和“硬链接”的区别
    linux umask使用详解
    浅谈Linux下mv和cp命令的区别
    Echarts中窗口自适应
    Echarts中series循环添加数据
    Echarts中tooltip格式化数据
    解决MySQL远程连接很慢问题
    解决Linux(CentOS) mysql命令:-bash: mysql: command not found
  • 原文地址:https://www.cnblogs.com/henw/p/2333783.html
Copyright © 2011-2022 走看看