好好学习,天天向上

在这个神马都是浮云的年代,我背着理想,带上坚持上路了...
posts - 2, comments - 0, trackbacks - 0, articles - 2

C# 读写Config文件

Posted on 2009-12-24 22:43 尘末 阅读(2810) 评论(0)  编辑 收藏 引用 所属分类: 编程技巧

读语句:

            String str = ConfigurationManager.AppSettings["DemoKey"].Value;



写语句:         

           Configuration config = ConfigurationManager.OpenExeConfiguration("E:\db.config");
           config.AppSettings.Settings[
"DemoKey"].Value = "DemoValue";
           config.Save();

 

配置文件内容格式:(db.config)

 

<?xml version="1.0" encoding="utf-8" ?>
  <configuration>
     <appSettings>
           <add key="DemoKey" value="*" />
     </appSettings>
  </configuration>



以上是网上转载,我仔细测试了一下,发现这段代码会有一个小问题(其实网上的人也说到了), 

ConfigurationManager.OpenExeConfiguration("E:\db.config");   

这个方法会在这个目录下产生一个副本文件(E:\db.config.config), 而代码真正操作的文件却不是db.config,而是程序自动创建的db.config.config文件,所以很苦恼,若删除原文件,则又会提示报错,

在这里我做了一点稍微的改动就可以达要我们想要的目的,(不生成文件副本,直接操作此文件,且更新操作也是操作此文件):

            //先实例化一个ExeConfigurationFileMap对象,把物理地址赋值到它的 ExeConfigFilename 属性中;
            ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
            fileMap.ExeConfigFilename 
= @"E:\MySrc\db.config";

            
//再调用fileMap 实例化 config , 这样,操作的文件就是db.config文件了,也不会产生副本文件
            Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
          
             //读写操作跟原来一样,不变
            String str = ConfigurationManager.AppSettings["DemoKey"];
            config.AppSettings.Settings["DemoKey"].Value = "DemoValue";

            //写完之后一定要保存,否则不会保存到文件中去的
            config.Save();                                                                                                            


首次发文,有点次,算是一个小问题的总结吧。

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理