读取config文件问题 据我所知用System.Configuration.AppSettingsReader始终会得到修改前的,所以我以前用的自定义方法(从codeproject下载的,好像叫ami什么来着)获取配置文件信息。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Config信息是程序启动一次加载进行缓存,以后都不加载的, 有读取和写入XML文件的示例代码吗?不要复杂的,只要基本的就可以了 用xml做config;XmlTextReader r=new XmlTextReader(路进);XmlDocument doc=new XmlDocument();doc.Load(reader)lXmlNode n=doc.SelectSingleNode("descendant::/config/configname"); 最后一步 return n.InnerText 使用System.Configuration.ConfigurationSettings.AppSettings["youkey"]来读取,返回是一个字符窜,更新了文件立刻生效,不需要重启。 Config信息是程序启动一次加载进行缓存,以后都不加载的,所以可以考虑用XML等进行存储 我以前也碰到过这样的需求,我是在改变Config文件的同时,将更改项目记录到一个hashtable中,我每次读取数据时都先从hashtable中读如果没有再利用net的读config的方法读内存中的设置. 我是在改变Config文件的同时,将更改项目记录到一个hashtable中----------------------------是不是在修改config并保存完之后将新的config放到内存? 请问怎么去实现这个功能? 使用Hashtable纪录你的变更项,然后读取Hashtable的项,Hashtable是微软.net提供的功能非常强大的内存表工具,好好利用可以解决很多问题,并提高速度 建议你能够看看msdn的Hashtable的描述,记住msdn是最好的工具和帮助 我是在改变Config文件的同时,将更改项目记录到一个hashtable中----------------------------是不是在修改config并保存完之后将新的config放到内存? 请问怎么去实现这个功能?-----------------------------不需要将所有的config内容都放入hashtable中,只需要放入你改动过的设置,或是新添加的设置,可以放置浪费效率!实现方法,构造一个静态的hashtable,当需要更改设置时,同时添加到hashtable中,注意在读取时要先读hashtable.如果hashtable中没有才读config,hashtable的查找和读取效率是很高的,你几乎是不用考虑其时间消耗,这样一来就可以不影响你程序整体效率 我程序是这样的,启动时读取config文件中的一些参数,确定服务器的位置,然后从服务器上检查是否有更新的config文件,如果有的话就把服务器上的config文件复制到本机并覆盖原先的config文件,然后程序继续读取config文件中的内容进行下一步的设置。由于config文件是复制过来的,不知道和原先的有哪些不同,所以无法采用hashtable的方式保存变动后的内容。那有没有XML文件创建和读取的简单方法啊我只需要保存键值和数据就可以了,就像原先的ini文件的功能,我想用XML文件来代替 下面是我现在使用的方法,感觉有点怪,有没其它更好的方法?private System.Xml.XmlDocument cfgdoc=new System.Xml.XmlDocument();private System.Xml.XmlNode para1;private string parastr;private string CfgFileName;cfgdoc.Load(CfgFileName);para1=cfgdoc.GetElementsByTagName("paraname1")[0];parastr=para1.InnerText; //读取参数...para1.InnerText=parastr; //保存参数cfgdoc.Save(CfgFileName); 没有必要这么复杂把!web.config本来就更新后就不用重启的! --> <compilation defaultLanguage="c#" debug="true" />把debug设为“true”,再试试看! 我不是WEB方式运行啊,不是ASP.NET,楼上的没用啊 这个很容易的。我一直都用这个,哪个什么鬼app.config难用死了。//从xml文件中读取数据private void readXml(){ string fileName=Application.StartupPath+"\\SysSetting.xml"; XmlTextReader tr = new XmlTextReader(fileName); while (tr.Read()) { if (tr.NodeType == XmlNodeType.Element) { LoadData(tr); } } tr.Close();}private void LoadData(XmlReader tr){ switch(tr.Name) { case "LocalPath": this.txtFileDir.Text = tr.ReadElementString(); break; case "RunStartTime": this.dateBegin.Text = tr.ReadElementString(); break; default: break; }} superzxf(superzxf) 我程序是这样的,启动时读取config文件中的一些参数,确定服务器的位置,然后从服务器上检查是否有更新的config文件,如果有的话就把服务器上的config文件复制到本机并覆盖原先的config文件,然后程序继续读取config文件中的内容进行下一步的设置。由于config文件是复制过来的,不知道和原先的有哪些不同,所以无法采用hashtable的方式保存变动后的内容。----------------------------------------------------------我觉得楼主的这种方式不太好,如果全部更新的话,那怎么能存在个性化的一个设置呢?对于app.config我觉得还是要放一些个性化的东西的,比如用户的输入习惯,和窗口习惯的,这样子的程序才会更有人性化的特色.而且我觉得完全只要在app.config自定义一个针对服务器的节点,以后只要更新这个节点应该就是足够了吧!app.config是xml呀!要充分利用的! 【求解惑】两个null数据相加的结果的疑问: c# 关于暂停监听的问题 c#如何远程连接SQL Server2000数据库(vs2005) System.IO.FileNotFoundException: 未能加载文件或 救急,请问如何获取cpu的温度? 相当急 如何在DataGrid里根据某一列的值是空来把该行数据变个颜色显示 在window怎样实现LDAP?!!!!?!!!分不够再加! 各位中有没有既会用c#又会用delphi的,问个简单的问题! 如何理解这段代码? 谁能帮忙给个水晶报表9的注册码,谢谢! 我想在IIS中动态的禁止一些IP来访问我的Web服务,怎么搞啊? 水晶报表的发布
不要复杂的,只要基本的就可以了
XmlDocument doc=new XmlDocument();
doc.Load(reader)lXmlNode n=doc.SelectSingleNode("descendant::/config/configname");
----------------------------
是不是在修改config并保存完之后将新的config放到内存? 请问怎么去实现这个功能?
----------------------------
是不是在修改config并保存完之后将新的config放到内存? 请问怎么去实现这个功能?
-----------------------------
不需要将所有的config内容都放入hashtable中,只需要放入你改动过的设置,或是新添加的设置,可以放置浪费效率!
实现方法,构造一个静态的hashtable,当需要更改设置时,同时添加到hashtable中,注意在读取时要先读hashtable.如果hashtable中没有才读config,hashtable的查找和读取效率是很高的,你几乎是不用考虑其时间消耗,这样一来就可以不影响你程序整体效率
由于config文件是复制过来的,不知道和原先的有哪些不同,所以无法采用hashtable的方式保存变动后的内容。那有没有XML文件创建和读取的简单方法啊
我只需要保存键值和数据就可以了,就像原先的ini文件的功能,我想用XML文件来代替
private System.Xml.XmlNode para1;
private string parastr;
private string CfgFileName;
cfgdoc.Load(CfgFileName);
para1=cfgdoc.GetElementsByTagName("paraname1")[0];
parastr=para1.InnerText; //读取参数
...
para1.InnerText=parastr; //保存参数
cfgdoc.Save(CfgFileName);
<compilation
defaultLanguage="c#"
debug="true"
/>
把debug设为“true”,再试试看!
//从xml文件中读取数据
private void readXml()
{
string fileName=Application.StartupPath+"\\SysSetting.xml";
XmlTextReader tr = new XmlTextReader(fileName);
while (tr.Read())
{
if (tr.NodeType == XmlNodeType.Element)
{
LoadData(tr);
} }
tr.Close();
}
private void LoadData(XmlReader tr)
{
switch(tr.Name)
{
case "LocalPath": this.txtFileDir.Text = tr.ReadElementString();
break;
case "RunStartTime": this.dateBegin.Text = tr.ReadElementString();
break;
default: break;
}
}
我程序是这样的,启动时读取config文件中的一些参数,确定服务器的位置,然后从服务器上检查是否有更新的config文件,如果有的话就把服务器上的config文件复制到本机并覆盖原先的config文件,然后程序继续读取config文件中的内容进行下一步的设置。
由于config文件是复制过来的,不知道和原先的有哪些不同,所以无法采用hashtable的方式保存变动后的内容。
----------------------------------------------------------
我觉得楼主的这种方式不太好,如果全部更新的话,那怎么能存在个性化的一个设置呢?
对于app.config我觉得还是要放一些个性化的东西的,比如用户的输入习惯,和窗口习惯的,这样子的程序才会更有人性化的特色.而且我觉得完全只要在app.config自定义一个针对服务器的节点,以后只要更新这个节点应该就是足够了吧!app.config是xml呀!要充分利用的!