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"]来获取对应的值了。

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Configuration;
    
    namespace 命名空间
    {
        /// <summary>
        /// 对exe.Config文件中的appSettings段进行读写配置操作
        /// 注意:调试时,写操作将写在vhost.exe.config文件中
        /// </summary>
        public class ConfigAppSettings
        {
            /// <summary>
            /// 写入值
            /// </summary>
            /// <param name="key"></param>
            /// <param name="value"></param>
            public static void SetValue(string key, string value)
            {
                //增加的内容写在appSettings段下 <add key="RegCode" value="0"/>
                System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
           //System.Configuration.Configuration config = WebConfigurationManager.OpenWebConfiguration("~");//web程序这样写
    if (config.AppSettings.Settings[key] == null) { config.AppSettings.Settings.Add(key, value); } else { config.AppSettings.Settings[key].Value = value; } config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings");//重新加载新的配置文件 } /// <summary> /// 读取指定key的值 /// </summary> /// <param name="key"></param> /// <returns></returns> public static string GetValue(string key) { System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
           //System.Configuration.Configuration config = WebConfigurationManager.OpenWebConfiguration("~");//web程序这样写
    if (config.AppSettings.Settings[key] == null) return ""; else return config.AppSettings.Settings[key].Value; } } }

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

  • 相关阅读:
    洛谷 P1111 修复公路
    洛谷 P2320 [HNOI2006]鬼谷子的钱袋
    洛谷 P2023 [AHOI2009]维护序列
    洛谷 P1341 无序字母对(欧拉回路)
    洛谷 P1330 封锁阳光大学
    javaweb学习总结(二十三)——jsp自定义标签开发入门
    javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
    javaweb学习总结(二十一)——JavaWeb的两种开发模式
    javaweb学习总结(二十)——JavaBean总结
    javaweb学习总结(十九)——JSP标签
  • 原文地址:https://www.cnblogs.com/zouhao/p/3373396.html
Copyright © 2011-2022 走看看