C#中配置文件的操作.docx

上传人:大张伟 文档编号:6195781 上传时间:2020-09-22 格式:DOCX 页数:15 大小:165.52KB
返回 下载 相关 举报
C#中配置文件的操作.docx_第1页
第1页 / 共15页
C#中配置文件的操作.docx_第2页
第2页 / 共15页
C#中配置文件的操作.docx_第3页
第3页 / 共15页
C#中配置文件的操作.docx_第4页
第4页 / 共15页
C#中配置文件的操作.docx_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《C#中配置文件的操作.docx》由会员分享,可在线阅读,更多相关《C#中配置文件的操作.docx(15页珍藏版)》请在三一文库上搜索。

1、keyword )和一个等号,等号右边的就是关键字对.C#中配置文件的操作注:从网上收集整理了关于 C#中配置文件的资料, 以下是自己的学习笔记, 希望能给大家一点帮助,如有错漏,恳请指出。1 配置文件介绍程序配置文件实质上是应用程序的一种针对配置信息读写最简单的工具。它重要的功能就是将命令行选项和配置文件选项统一到一种数据结构中,这样的话可以在外部设置参数,而无须修改代码来达到我们想要的效果。配合上配置文件的读写接口,操作上也较为方便。过去常见的配置文件是以“ .ini”为后缀的文本文件。 INI,是英文“初始化( Initial )”的缩写。正如该术语所表示的, INI 文件被用来对操作系

2、统或特定程序初始化或进行参数设置。格式上主要分为“节” 、“参数”和“注解”三部分。后来由于Windows95 推出了注册表的概念, INI 配置文件在系统中的地位就大不如前了。不过作为应用程序的配置读写来说,INI还是有其牢固的地位的。后来 XML 的发展也为配置文件提供了一种更好的存储格式。常见到的“config ”文件扩展名的文件,也是在C#编程中较为常用的。C#的配置文件在编码阶段,可通过添加新项找到(名为“应用程序配置文件”),添加入项目后名为app.config ,程序编译后一般是以“程序名”+“ .exe”+“ .config ”命名的文件出现。config 文件的内容与配置相关

3、的分为两大部分,一部分为应用程序的配置节( appSettings),另一部分为连接字符串的配置节( connectionStrings )。可使用 C#提供的 ConfigurationManager(原先使用ConfigureationSettings ,现已弃用) 进行读取。 ConfigurationManager中比较重要的是 AppSettings 和 ConnectionStrings 两个属性,分别负责读取应用程序的配置项( appSettings )和 连 接 字 符 串的 配 置 项( connectionStrings )。 如 果 要修 改 配 置 文 件 项 ,需 要

4、先 通 过ConfigurationManager 的 OpenExeConfigureation() 方法读取信息到Configuration 类中,再修改其 中 对 应 项 的 信 息 , 然 后 执 行 保 存 , 最 后 如 果 要 将 结 果 调 用 出 来 , 还 需 要ConfigurationManager 调用 RefreshSection()方法进行刷新。以上是对配置文件一些简单的介绍。下面我们来详细看一下配置文件的各种功能和用法。2 INI 配置文件2.1格式INI 配置文件以 ” ini为”文件扩展名,内容格式为:节、参数和注解。每一个 INI 文件构成都非常类似,由若

5、干段落(section )组成,在每个带括号的标题下面,是若干个以单个单词开头的关键词(. 的 ( value)。其一般形式如下:Section1KeyWord1 = ValuelKeyWord2 = Value2Section2KeyWord3 = Value3KeyWord4 = Value42.1.1节section2.1.2参数name=value2.1.3注解注解使用分号表示(;)。在分号后面的文字,直到 行 尾都全部 注解。如:; comment text2.2操作C 操 作INI文 件 使 用 的 是Windows系 统 自 带Win32的API函 数 WritePrivateP

6、rofileString()和 GetPrivateProfileString()函数。 二个函数都位于 “ kernel32.dll ” 文件中。C中 Win32 的 API 函数的互操作是通 命名空 “ System.Runtime.InteropServices ”中的“ DllImport ”特征 来 的。它的主要作用是指示此属性化方法是作 非托管DLL的 出 的。2.2.1读取 DllImport ( kernel32 ) private static extern int GetPrivateProfileString ( string section , string key ,

7、 string def , StringBuilder retVal ,int size , string filePath ) ;参数 明: section : INI 文件中的段落名称;key :INI 文件中的关 字;def :无法 取 候 候的缺省数 ;retVal : 取数 ; size:数 的大小;filePath : INI文件的完整路径.和名称。2.2.2写入 DllImport ( kernel32 ) private static extern long WritePrivateProfileString ( stringsection ,string key , stri

8、ng val , string filePath ) ;参数说明: section: INI 文件中的段落;key:INI 文件中的关键字;val: INI 文件中关键字的数值; filePath: INI 文件的完整的路径和名称。2.3实例下面是自行编写的一个读写INI 文件的类classIniFile/ 绝对路径(默认执行程序目录)publicstringFilePath get ;set ; / / 读取 ini 文件/ / 段落名 / 键/ 缺省值 / 所对应的值,如果该 key不存在则返回空值/ 值允许的大小 / INI 文件的完整路径和文件名 / DllImport( kernel

9、32)privatestaticexternintGetPrivateProfileString(stringsection,stringkey,stringdefVal,StringBuilderretVal,intsize,stringfilePath);/ / 写入 ini 文件/ / 段落名 / 键/ 值./ INI 文件的完整路径和文件名 / DllImport( kernel32)privatestaticexternlong WritePrivateProfileString(stringsection,stringkey,stringval,stringfilePath);#r

10、egion静态方法publicstaticstringReadVal(stringsection,stringkey, stringfilePath)stringdefVal = ;StringBuilderretVal =new StringBuilder();intsize = 10240;stringrt = ;tryGetPrivateProfileString(section, key, defVal, retVal, size, filePath);rt = retVal.ToString();catchrt = ;returnrt;publicstaticbool WriteVa

11、l(stringsection,stringkey,stringval,stringfilePath)tryif(WritePrivateProfileString(section, key, val,filePath) = 0)returnfalse ;elsereturntrue ;catchreturnfalse ;.#endregion#region对象方法publicstringReadVal( stringsection,stringkey)stringdefVal = ;StringBuilderretVal =new StringBuilder();intsize = 1024

12、0;stringrt = ;tryGetPrivateProfileString(section, key,defVal, retVal, size, this .FilePath); rt = retVal.ToString();catchrt = ;returnrt;publicbool WriteVal(stringsection,stringkey,stringval)tryWritePrivateProfileString(section, key, val, this .FilePath);returntrue ;catchreturnfalse ;#endregion.3 Con

13、fig 配置文件3.1文件内容层次configuration 为根节点,其下可以带有appSettings 和 connectionStrings 两个子节点。另外需要注意的是这两个子节点中配置项的名称和值并不一样,appSettings 中为“ key”和“ value”, connectionStrings 中为“ name”和“ connectionString ”。粗略为如下所示:一个完整的config 配置文件内容:.3.2appSettings节的操作config 文件中appSettings 的读取主要依靠ConfigurationManager类提供的两个属性:AppSetti

14、ngs 和 ConnectionStrings,通过字符串索引获取对应配置项的内容。config 文件中appSettings 的读取主要依靠ConfigurationManager类提供的属性:AppSettings,通过字符串索引获取对应配置项的内容。而写入操作,必须要先读取配置到一个特定的配置对象中,再作修改和保存。3.2.1读取通过 ConfigurationManager.AppSettingskey读取例子:publicstaticstringGetAppSetting(stringkey)strings = ;trys =ConfigurationManager.AppSetti

15、ngskey;catch returns;3.2.2以配置对象为单位写入写入需要将配置文件读取到Configuration 对象中,然后在其中修改,最后保存。另外注意, Configuration类是没有构造函数的,需要使用ConfigurationManager类的OpenExeConfiguration() 方法打开。3.2.2.1打开与 3.3.2.1 connectionStrings 的打开相同.1、 打开当前程序的配置文件。Configurationconfig =ConfigurationManager .OpenExeConfiguration( ConfigurationUs

16、erLevel .None );2、 打开指定路径的配置文件。ConfigurationManager.OpenExeConfiguration(string exePath)3.2.2.2修改config.AppSettings.Settingskey.Value = value; /修改对应项config.Save(ConfigurationSaveMode .Modified); /保存ConfigurationManager .RefreshSection( appSettings ); / 刷新配置文件管理类3.2.2.3添加config.AppSettings.Settings.A

17、dd(key, value); /添加/ 后续保存、刷新不累赘3.2.2.4删除config.AppSettings.Settings.Remove(key); /删除/ 后续保存、刷新不累赘3.2.3以配置节为单位写入通过获取配置对象的指定节,在节上进行写入操作。下面的修改为例(注:添加和删除也大同小异)AppSettingsSection appSettings = (AppSettingsSection)m_Config.GetSection(appSettings); appSettings.Settingskey.Value = value;m_Config.Save();.3.3c

18、onnectionStrings节的操作config文 件 中connectionStrings的 读 取 跟appSettings类 似 , 也 要 依 靠ConfigurationManager 类提供的属性,这个属性为ConnectionStrings 。写入操作也类同。3.3.1读取ConfigurationManager.ConnectionStringsname.ToString()3.3.2写入3.3.2.1打开参照 3.2.2.13.3.2.2修改config.ConnectionStrings.ConnectionStringsname.ConnectionString =c

19、onnectionString;/config.ConnectionStrings.ConnectionStringsname.ProviderName =providerName; /该项可选3.3.2.3添加ConnectionStringSettingsconnSetting =newConnectionStringSettings(name, connectionString,providerName);/ 生成项config.ConnectionStrings.ConnectionStrings.Add(connSetting); /添加/ 后续保存、刷新.3.3.2.4删除m_Co

20、nfig.ConnectionStrings.ConnectionStrings.Remove(ConnectionStringSettingsitem); /通过指定项删除m_Config.ConnectionStrings.ConnectionStrings.Remove(name); /通过名称删除3.3.3以配置节为单位写入直接上例子:ConnectionStringsSectionconnSection=(ConnectionStringsSection)m_Config.GetSection(connectionStrings); connSection.ConnectionStr

21、ingsname.ConnectionString = connectionString; m_Config.Save();3.4自定义配置节的操作利用 Configuration 的 GetSection()方法,获取后操作。3.5实例直接上源代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Configuration;namespaceTestConfig1classConfigMgr/ 如需要使用 ConfigurationManager 类还

22、必须在 “引用 ”中,引用 System.Configuration/ConfigurationSettings只是针对旧版的兼容 (向下兼容) ,不建议.使用/ 配置文件privatestaticConfigurationm_Config =ConfigurationManager .OpenExeConfiguration( ConfigurationUserLevel .None ); / 读取当前程序的配置文件/ / / / publicstaticstringGetAppSetting(stringkey)strings = ;trys =ConfigurationManager.A

23、ppSettingskey;catch returns;publicstaticstringGetConnString(stringname)strings = ;tryif( ConfigurationManager.ConnectionStringsname !=null )s =ConfigurationManager.ConnectionStringsname.ToString();catch returns;/ / 定义设置当前或者其他应用程序配置文件中的 appSettings 节点,通过 AppSettings 属性/ / keyName/ keyValue .publicsta

24、ticbool SetAppSetting1(stringkey,stringvalue)tryif(m_Config.AppSettings.Settingskey !=null )m_Config.AppSettings.Settingskey.Value = value;elsem_Config.AppSettings.Settings.Add(key, value);m_Config.Save(ConfigurationSaveMode .Modified);ConfigurationManager .RefreshSection( appSettings ); return true

25、 ;catchreturnfalse ;/ / 定义设置当前或者其他应用程序配置文件中的 appSettings 节点/ / keyName/ keyValue publicstaticvoid SetAppSetting(stringkey,stringvalue)AppSettingsSectionappSettings =( AppSettingsSection)m_Config.GetSection(appSettings);if(appSettings.Settingskey !=null )appSettings.Settingskey.Value = value;m_Config

26、.Save();elseappSettings.Settings.Add(key, value);m_Config.Save();ConfigurationManager.RefreshSection(appSettings);./ / 定义设置当前或者其他应用程序配置文件中的 connectionStrings节点,通过 ConnectionStrings 属性/ / keyName/ keyValue publicstaticbool SetConnectionString1(stringname, stringconnectionString,stringproviderName =Sy

27、stem.Data.SqlClient)tryif(m_Config.ConnectionStrings.ConnectionStringsname !=null )m_Config.ConnectionStrings.ConnectionStringsname.ConnectionString = connectionString;m_Config.ConnectionStrings.ConnectionStringsname.ProviderName = providerName;/m_Config.Save(ConfigurationSaveMode.Modified);elseConn

28、ectionStringSettings connSetting = new ConnectionStringSettings (name, connectionString, providerName);m_Config.ConnectionStrings.ConnectionStrings.Add(connSetting); /config.Save(ConfigurationSaveMode.Modified);m_Config.Save(ConfigurationSaveMode .Modified);ConfigurationManager.RefreshSection(connec

29、tionStrings);returntrue ;catchreturnfalse ;/ / 定义设置当前或者其他应用程序配置文件中的 connectionStrings节点./ / keyName/ keyValue publicstaticvoid SetConnectionString(stringname, stringconnectionString,stringproviderName =System.Data.SqlClient)/ 通过获取对应的节来操作实现/providerName = System.Data.SqlClientConnectionStringsSection

30、connSection =( ConnectionStringsSection)m_Config.GetSection(connectionStrings);if(connSection.ConnectionStringsname !=null )connSection.ConnectionStringsname.ConnectionString = connectionString;m_Config.Save();elseConnectionStringSettings connSettings = new ConnectionStringSettings (name, connection

31、String, providerName);connSection.ConnectionStrings.Add(connSettings); m_Config.Save();ConfigurationManager.RefreshSection(appSettings);/ / / publicstaticbool RemoveAppSetting( stringkey)tryif(m_Config.AppSettings.Settingskey !=null )m_Config.AppSettings.Settings.Remove(key);/m_Config.Save(Configura

32、tionSaveMode.Modified);m_Config.Save(ConfigurationSaveMode .Modified);ConfigurationManager .RefreshSection( appSettings ); return true ;.catchreturnfalse ;/ / / publicstaticbool RemoveConnString( stringname)tryif(m_Config.ConnectionStrings.ConnectionStringsname !=null )m_Config.ConnectionStrings.ConnectionStrings.Remove(name);/m_Config.Save(ConfigurationSaveMode.Modified);m_Config.Save(ConfigurationSaveMode .Modified);ConfigurationManager.RefreshSection(connectionStrings);returntrue ;catchreturnfalse ;.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1