详解C#如何读写config配置文件
配置文件概述:
应用程序配置文件是标准的XML文件,XML标记和属性是区分大小写的。它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序。配置文件的根节点是configuration。我们经常访问的是appSettings,它是由.Net预定义的配置节。我们经常使用的配置文件的架构是客诉下面的形式。先大概有个印象,通过后面的实例会有一个比较清楚的认识。下面的“配置节”可以理解为进行配置一个XML的节点。
对于一个config文件:
对config配置文件的读写类:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Text.RegularExpressions;
usingSystem.Configuration;
usingSystem.ServiceModel;
usingSystem.ServiceModel.Configuration;
namespaceNetUtilityLib
{
publicstaticclassConfigHelper
{
//依据连接串名字connectionName返回数据连接字符串
publicstaticstringGetConnectionStringsConfig(stringconnectionName)
{
//指定config文件读取
stringfile=System.Windows.Forms.Application.ExecutablePath;
System.Configuration.Configurationconfig=ConfigurationManager.OpenExeConfiguration(file);
stringconnectionString=
config.ConnectionStrings.ConnectionStrings[connectionName].ConnectionString.ToString();
returnconnectionString;
}
///
///更新连接字符串
///
///连接字符串名称
///连接字符串内容
///数据提供程序名称
publicstaticvoidUpdateConnectionStringsConfig(stringnewName,stringnewConString,stringnewProviderName)
{
//指定config文件读取
stringfile=System.Windows.Forms.Application.ExecutablePath;
Configurationconfig=ConfigurationManager.OpenExeConfiguration(file);
boolexist=false;//记录该连接串是否已经存在
//如果要更改的连接串已经存在
if(config.ConnectionStrings.ConnectionStrings[newName]!=null)
{
exist=true;
}
//如果连接串已存在,首先删除它
if(exist)
{
config.ConnectionStrings.ConnectionStrings.Remove(newName);
}
//新建一个连接字符串实例
ConnectionStringSettingsmySettings=
newConnectionStringSettings(newName,newConString,newProviderName);
//将新的连接串添加到配置文件中.
config.ConnectionStrings.ConnectionStrings.Add(mySettings);
//保存对配置文件所作的更改
config.Save(ConfigurationSaveMode.Modified);
//强制重新载入配置文件的ConnectionStrings配置节
ConfigurationManager.RefreshSection("ConnectionStrings");
}
///
///返回*.exe.config文件中appSettings配置节的value项
///
///
///
publicstaticstringGetAppConfig(stringstrKey)
{
stringfile=System.Windows.Forms.Application.ExecutablePath;
Configurationconfig=ConfigurationManager.OpenExeConfiguration(file);
foreach(stringkeyinconfig.AppSettings.Settings.AllKeys)
{
if(key==strKey)
{
returnconfig.AppSettings.Settings[strKey].Value.ToString();
}
}
returnnull;
}
///
///在*.exe.config文件中appSettings配置节增加一对键值对
///
///
///
publicstaticvoidUpdateAppConfig(stringnewKey,stringnewValue)
{
stringfile=System.Windows.Forms.Application.ExecutablePath;
Configurationconfig=ConfigurationManager.OpenExeConfiguration(file);
boolexist=false;
foreach(stringkeyinconfig.AppSettings.Settings.AllKeys)
{
if(key==newKey)
{
exist=true;
}
}
if(exist)
{
config.AppSettings.Settings.Remove(newKey);
}
config.AppSettings.Settings.Add(newKey,newValue);
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
}
//修改system.serviceModel下所有服务终结点的IP地址
publicstaticvoidUpdateServiceModelConfig(stringconfigPath,stringserverIP)
{
Configurationconfig=ConfigurationManager.OpenExeConfiguration(configPath);
ConfigurationSectionGroupsec=config.SectionGroups["system.serviceModel"];
ServiceModelSectionGroupserviceModelSectionGroup=secasServiceModelSectionGroup;
ClientSectionclientSection=serviceModelSectionGroup.Client;
foreach(ChannelEndpointElementiteminclientSection.Endpoints)
{
stringpattern=@"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b";
stringaddress=item.Address.ToString();
stringreplacement=string.Format("{0}",serverIP);
address=Regex.Replace(address,pattern,replacement);
item.Address=newUri(address);
}
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("system.serviceModel");
}
//修改applicationSettings中App.Properties.Settings中服务的IP地址
publicstaticvoidUpdateConfig(stringconfigPath,stringserverIP)
{
Configurationconfig=ConfigurationManager.OpenExeConfiguration(configPath);
ConfigurationSectionGroupsec=config.SectionGroups["applicationSettings"];
ConfigurationSectionconfigSection=sec.Sections["DataService.Properties.Settings"];
ClientSettingsSectionclientSettingsSection=configSectionasClientSettingsSection;
if(clientSettingsSection!=null)
{
SettingElementelement1=clientSettingsSection.Settings.Get("DataService_SystemManagerWS_SystemManagerWS");
if(element1!=null)
{
clientSettingsSection.Settings.Remove(element1);
stringoldValue=element1.Value.ValueXml.InnerXml;
element1.Value.ValueXml.InnerXml=GetNewIP(oldValue,serverIP);
clientSettingsSection.Settings.Add(element1);
}
SettingElementelement2=clientSettingsSection.Settings.Get("DataService_EquipManagerWS_EquipManagerWS");
if(element2!=null)
{
clientSettingsSection.Settings.Remove(element2);
stringoldValue=element2.Value.ValueXml.InnerXml;
element2.Value.ValueXml.InnerXml=GetNewIP(oldValue,serverIP);
clientSettingsSection.Settings.Add(element2);
}
}
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("applicationSettings");
}
privatestaticstringGetNewIP(stringoldValue,stringserverIP)
{
stringpattern=@"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b";
stringreplacement=string.Format("{0}",serverIP);
stringnewvalue=Regex.Replace(oldValue,pattern,replacement);
returnnewvalue;
}
}
}
测试代码如下:
classProgram
{
staticvoidMain(string[]args)
{
try
{
//stringfile=System.Windows.Forms.Application.ExecutablePath+".config";
//stringfile1=AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
stringserverIP=ConfigHelper.GetAppConfig("ServerIP");
stringdb=ConfigHelper.GetAppConfig("DataBase");
stringuser=ConfigHelper.GetAppConfig("user");
stringpassword=ConfigHelper.GetAppConfig("password");
Console.WriteLine(serverIP);
Console.WriteLine(db);
Console.WriteLine(user);
Console.WriteLine(password);
ConfigHelper.UpdateAppConfig("ServerIP","192.168.1.11");
stringnewIP=ConfigHelper.GetAppConfig("ServerIP");
Console.WriteLine(newIP);
Console.ReadKey();
}
catch(Exceptionex)
{
Console.WriteLine(ex.Message);
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。