《C#中配置文件的操作.doc》由会员分享,可在线阅读,更多相关《C#中配置文件的操作.doc(15页珍藏版)》请在金锄头文库上搜索。
1、C#中配置文件的操作注:从网上收集整理了关于C#中配置文件的资料,以下是自己的学习笔记,希望能给大家一点帮助,如有错漏,恳请指出。1 配置文件介绍程序配置文件实质上是应用程序的一种针对配置信息读写最简单的工具。它重要的功能就是将命令行选项和配置文件选项统一到一种数据结构中,这样的话可以在外部设置参数,而无须修改代码来达到我们想要的效果。配合上配置文件的读写接口,操作上也较为方便。过去常见的配置文件是以“.ini”为后缀的文本文件。INI,是英文“初始化(Initial)”的缩写。正如该术语所表示的,INI文件被用来对操作系统或特定程序初始化或进行参数设置。格式上主要分为“节”、“参数”和“注解
2、”三部分。后来由于Windows95推出了注册表的概念,INI配置文件在系统中的地位就大不如前了。不过作为应用程序的配置读写来说,INI还是有其牢固的地位的。后来XML的发展也为配置文件提供了一种更好的存储格式。常见到的“config”文件扩展名的文件,也是在C#编程中较为常用的。C#的配置文件在编码阶段,可通过添加新项找到(名为“应用程序配置文件”),添加入项目后名为app.config,程序编译后一般是以“程序名”+“.exe”+“.config”命名的文件出现。config文件的内容与配置相关的分为两大部分,一部分为应用程序的配置节(appSettings),另一部分为连接字符串的配置节
3、(connectionStrings)。可使用C#提供的ConfigurationManager(原先使用ConfigureationSettings,现已弃用)进行读取。ConfigurationManager中比较重要的是AppSettings和ConnectionStrings两个属性,分别负责读取应用程序的配置项(appSettings)和连接字符串的配置项(connectionStrings)。如果要修改配置文件项,需要先通过ConfigurationManager的OpenExeConfigureation()方法读取信息到Configuration类中,再修改其中对应项的信息,然
4、后执行保存,最后如果要将结果调用出来,还需要ConfigurationManager调用RefreshSection()方法进行刷新。以上是对配置文件一些简单的介绍。下面我们来详细看一下配置文件的各种功能和用法。2 INI配置文件2.1 格式INI配置文件以”ini”为文件扩展名,内容格式为:节、参数和注解。每一个INI文件构成都非常类似,由若干段落(section)组成,在每个带括号的标题下面,是若干个以单个单词开头的关键词(keyword)和一个等号,等号右边的就是关键字对应的值(value)。其一般形式如下: Section1 KeyWord1 = Valuel KeyWord2 = V
5、alue2 Section2 KeyWord3 = Value3 KeyWord4 = Value42.1.1 节section2.1.2 参数name=value2.1.3 注解注解使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。如:; comment text2.2 操作C操作INI文件使用的是Windows系统自带Win32的API函数WritePrivateProfileString()和GetPrivateProfileString()函数。这二个函数都位于“kernel32.dll”文件中。C中对Win32的API函数的互操作是通过命名空间“System.Runti
6、me.InteropServices”中的“DllImport”特征类来实现的。它的主要作用是指示此属性化方法是作为非托管DLL的输出实现的。2.2.1 读取 DllImport ( kernel32 ) private static extern int GetPrivateProfileString ( string section ,string key , string def , StringBuilder retVal ,int size , string filePath ) ;参数说明:section:INI文件中的段落名称;key:INI文件中的关键字;def:无法读取时候时
7、候的缺省数值;retVal:读取数值;size:数值的大小;filePath:INI文件的完整路径和名称。2.2.2 写入 DllImport ( kernel32 ) private static extern long WritePrivateProfileString ( string section , string key , string val , string filePath ) ; 参数说明:section:INI文件中的段落;key:INI文件中的关键字;val:INI文件中关键字的数值;filePath:INI文件的完整的路径和名称。2.3 实例下面是自行编写的一个读写
8、INI文件的类 class IniFile /绝对路径(默认执行程序目录) public string FilePath get; set; / / 读取ini文件 / / 段落名 / 键 / 缺省值 / 所对应的值,如果该key不存在则返回空值 / 值允许的大小 / INI文件的完整路径和文件名 / DllImport(kernel32) private static extern int GetPrivateProfileString( string section, string key, string defVal, StringBuilder retVal, int size, st
9、ring filePath); / / 写入ini文件 / / 段落名 / 键 / 值 / INI文件的完整路径和文件名 / DllImport(kernel32) private static extern long WritePrivateProfileString( string section, string key, string val, string filePath); #region 静态方法 public static string ReadVal(string section, string key, string filePath) string defVal = ;
10、StringBuilder retVal = new StringBuilder(); int size = 10240; string rt = ; try GetPrivateProfileString(section, key, defVal, retVal, size, filePath); rt = retVal.ToString(); catch rt = ; return rt; public static bool WriteVal(string section, string key, string val, string filePath) try if (WritePri
11、vateProfileString(section, key, val, filePath) = 0) return false; else return true; catch return false; #endregion #region 对象方法 public string ReadVal(string section, string key) string defVal = ; StringBuilder retVal = new StringBuilder(); int size = 10240; string rt = ; try GetPrivateProfileString(section, key, defVal, retVal, size, this.FilePath); rt = retVal.ToString(); catch rt = ; return rt; public bool WriteVal(stri