欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOCX文档下载  

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

    • 资源ID:6195781       资源大小:165.52KB        全文页数:15页
    • 资源格式: DOCX        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    keyword )和一个等号,等号右边的就是关键字对.C#中配置文件的操作注:从网上收集整理了关于 C#中配置文件的资料, 以下是自己的学习笔记, 希望能给大家一点帮助,如有错漏,恳请指出。1 配置文件介绍程序配置文件实质上是应用程序的一种针对配置信息读写最简单的工具。它重要的功能就是将命令行选项和配置文件选项统一到一种数据结构中,这样的话可以在外部设置参数,而无须修改代码来达到我们想要的效果。配合上配置文件的读写接口,操作上也较为方便。过去常见的配置文件是以“ .ini”为后缀的文本文件。 INI,是英文“初始化( Initial )”的缩写。正如该术语所表示的, INI 文件被用来对操作系统或特定程序初始化或进行参数设置。格式上主要分为“节” 、“参数”和“注解”三部分。后来由于Windows95 推出了注册表的概念, INI 配置文件在系统中的地位就大不如前了。不过作为应用程序的配置读写来说,INI还是有其牢固的地位的。后来 XML 的发展也为配置文件提供了一种更好的存储格式。常见到的“config ”文件扩展名的文件,也是在C#编程中较为常用的。C#的配置文件在编码阶段,可通过添加新项找到(名为“应用程序配置文件”),添加入项目后名为app.config ,程序编译后一般是以“程序名”+“ .exe”+“ .config ”命名的文件出现。config 文件的内容与配置相关的分为两大部分,一部分为应用程序的配置节( appSettings),另一部分为连接字符串的配置节( connectionStrings )。可使用 C#提供的 ConfigurationManager(原先使用ConfigureationSettings ,现已弃用) 进行读取。 ConfigurationManager中比较重要的是 AppSettings 和 ConnectionStrings 两个属性,分别负责读取应用程序的配置项( appSettings )和 连 接 字 符 串的 配 置 项( connectionStrings )。 如 果 要修 改 配 置 文 件 项 ,需 要先 通 过ConfigurationManager 的 OpenExeConfigureation() 方法读取信息到Configuration 类中,再修改其 中 对 应 项 的 信 息 , 然 后 执 行 保 存 , 最 后 如 果 要 将 结 果 调 用 出 来 , 还 需 要ConfigurationManager 调用 RefreshSection()方法进行刷新。以上是对配置文件一些简单的介绍。下面我们来详细看一下配置文件的各种功能和用法。2 INI 配置文件2.1格式INI 配置文件以 ” ini为”文件扩展名,内容格式为:节、参数和注解。每一个 INI 文件构成都非常类似,由若干段落(section )组成,在每个带括号的标题下面,是若干个以单个单词开头的关键词(. 的 ( value)。其一般形式如下:Section1KeyWord1 = ValuelKeyWord2 = Value2Section2KeyWord3 = Value3KeyWord4 = 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.Runtime.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 :无法 取 候 候的缺省数 ;retVal : 取数 ; size:数 的大小;filePath : INI文件的完整路径.和名称。2.2.2写入 DllImport ( "kernel32" ) private static extern long WritePrivateProfileString ( stringsection ,string key , string val , string filePath ) ;参数说明: section: INI 文件中的段落;key:INI 文件中的关键字;val: INI 文件中关键字的数值; filePath: INI 文件的完整的路径和名称。2.3实例下面是自行编写的一个读写INI 文件的类classIniFile/ 绝对路径(默认执行程序目录)publicstringFilePath get ;set ; / <summary>/ 读取 ini 文件/ </summary>/ <param name="section"> 段落名 </param>/ <param name="key">键</param>/ <param name="defVal"> 缺省值 </param>/ <param name="retVal"> 所对应的值,如果该 key不存在则返回空值</param>/ <param name="size"> 值允许的大小 </param>/ <param name="filePath"> INI 文件的完整路径和文件名 </param>/ <returns></returns>DllImport( "kernel32")privatestaticexternintGetPrivateProfileString(stringsection,stringkey,stringdefVal,StringBuilderretVal,intsize,stringfilePath);/ <summary>/ 写入 ini 文件/ </summary>/ <param name="section"> 段落名 </param>/ <param name="key">键</param>/ <param name="val"> 值</param>./ <param name="filePath"> INI 文件的完整路径和文件名 </param>/ <returns></returns>DllImport( "kernel32")privatestaticexternlong WritePrivateProfileString(stringsection,stringkey,stringval,stringfilePath);#region静态方法publicstaticstringReadVal(stringsection,stringkey, stringfilePath)stringdefVal ="" ;StringBuilderretVal =new StringBuilder();intsize = 10240;stringrt ="" ;tryGetPrivateProfileString(section, key, defVal, retVal, size, filePath);rt = retVal.ToString();catchrt ="" ;returnrt;publicstaticbool WriteVal(stringsection,stringkey,stringval,stringfilePath)tryif(WritePrivateProfileString(section, key, val,filePath) = 0)returnfalse ;elsereturntrue ;catchreturnfalse ;.#endregion#region对象方法publicstringReadVal( stringsection,stringkey)stringdefVal ="" ;StringBuilderretVal =new StringBuilder();intsize = 10240;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 Config 配置文件3.1文件内容层次configuration 为根节点,其下可以带有appSettings 和 connectionStrings 两个子节点。另外需要注意的是这两个子节点中配置项的名称和值并不一样,appSettings 中为“ key”和“ value”, connectionStrings 中为“ name”和“ connectionString ”。粗略为如下所示:<configuration><appSettings><add key=” key1 ” value=” xxxx1 ” /><add key=” key2 ” value=” xxxx2 ” /></appSettins><connctionStrings><add name= ” sql1 ” connecitonString=” xxxx1 ” /><add name= ” sql2 ” connecitonString=” xxxx2 ” /></connectionStrings></configuration>一个完整的config 配置文件内容:<?xml version =" 1.0 " ?><configuration>< startup ><supportedRuntimeversion =" v4.0 "sku=" .NETFramework,Version=v4.0 " /></ startup >< appSettings ><add key=" test1 " value =" test1s value is test1!" /><add key=" test2 " value =" test2s value is test2!" /></ appSettings >< connectionStrings><add name=" sql1 " connectionString=" server=127.0.0.1;database=testdb; uid=sa; pwd=sa" /></ connectionStrings></ configuration>.3.2appSettings节的操作config 文件中appSettings 的读取主要依靠ConfigurationManager类提供的两个属性:AppSettings 和 ConnectionStrings,通过字符串索引获取对应配置项的内容。config 文件中appSettings 的读取主要依靠ConfigurationManager类提供的属性:AppSettings,通过字符串索引获取对应配置项的内容。而写入操作,必须要先读取配置到一个特定的配置对象中,再作修改和保存。3.2.1读取通过 ConfigurationManager.AppSettingskey读取例子:publicstaticstringGetAppSetting(stringkey)strings ="" ;trys =ConfigurationManager.AppSettingskey;catch returns;3.2.2以配置对象为单位写入写入需要将配置文件读取到Configuration 对象中,然后在其中修改,最后保存。另外注意, Configuration类是没有构造函数的,需要使用ConfigurationManager类的OpenExeConfiguration() 方法打开。3.2.2.1打开与 3.3.2.1 connectionStrings 的打开相同.1、 打开当前程序的配置文件。Configurationconfig =ConfigurationManager .OpenExeConfiguration( ConfigurationUserLevel .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.Add(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.3connectionStrings节的操作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 =connectionString;/config.ConnectionStrings.ConnectionStringsname.ProviderName =providerName; /该项可选3.3.2.3添加ConnectionStringSettingsconnSetting =newConnectionStringSettings(name, connectionString,providerName);/ 生成项config.ConnectionStrings.ConnectionStrings.Add(connSetting); /添加/ 后续保存、刷新.3.3.2.4删除m_Config.ConnectionStrings.ConnectionStrings.Remove(ConnectionStringSettingsitem); /通过指定项删除m_Config.ConnectionStrings.ConnectionStrings.Remove(name); /通过名称删除3.3.3以配置节为单位写入直接上例子:ConnectionStringsSectionconnSection=(ConnectionStringsSection)m_Config.GetSection("connectionStrings"); connSection.ConnectionStringsname.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 类还必须在 “引用 ”中,引用 System.Configuration/ConfigurationSettings只是针对旧版的兼容 (向下兼容) ,不建议.使用/ 配置文件privatestaticConfigurationm_Config =ConfigurationManager .OpenExeConfiguration( ConfigurationUserLevel .None ); / 读取当前程序的配置文件/ <summary>/ </summary>/ <param name="key"></param>/ <returns></returns>publicstaticstringGetAppSetting(stringkey)strings ="" ;trys =ConfigurationManager.AppSettingskey;catch returns;publicstaticstringGetConnString(stringname)strings ="" ;tryif( ConfigurationManager.ConnectionStringsname !=null )s =ConfigurationManager.ConnectionStringsname.ToString();catch returns;/ <summary>/ 定义设置当前或者其他应用程序配置文件中的 appSettings 节点,通过 AppSettings 属性/ </summary>/ <param name="key">keyName</param>/ <param name="value"> keyValue </param>.publicstaticbool 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 ;catchreturnfalse ;/ <summary>/ 定义设置当前或者其他应用程序配置文件中的 appSettings 节点/ </summary>/ <param name="key">keyName</param>/ <param name="value"> keyValue </param>publicstaticvoid SetAppSetting(stringkey,stringvalue)AppSettingsSectionappSettings =( AppSettingsSection)m_Config.GetSection("appSettings");if(appSettings.Settingskey !=null )appSettings.Settingskey.Value = value;m_Config.Save();elseappSettings.Settings.Add(key, value);m_Config.Save();ConfigurationManager.RefreshSection("appSettings");./ <summary>/ 定义设置当前或者其他应用程序配置文件中的 connectionStrings节点,通过 ConnectionStrings 属性/ </summary>/ <param name="key">keyName</param>/ <param name="value"> keyValue </param>publicstaticbool SetConnectionString1(stringname, stringconnectionString,stringproviderName ="System.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);elseConnectionStringSettings connSetting = new ConnectionStringSettings (name, connectionString, providerName);m_Config.ConnectionStrings.ConnectionStrings.Add(connSetting); /config.Save(ConfigurationSaveMode.Modified);m_Config.Save(ConfigurationSaveMode .Modified);ConfigurationManager.RefreshSection("connectionStrings");returntrue ;catchreturnfalse ;/ <summary>/ 定义设置当前或者其他应用程序配置文件中的 connectionStrings节点./ </summary>/ <param name="key">keyName</param>/ <param name="value"> keyValue </param>publicstaticvoid SetConnectionString(stringname, stringconnectionString,stringproviderName ="System.Data.SqlClient")/ 通过获取对应的节来操作实现/providerName = "System.Data.SqlClient"ConnectionStringsSectionconnSection =( ConnectionStringsSection)m_Config.GetSection("connectionStrings");if(connSection.ConnectionStringsname !=null )connSection.ConnectionStringsname.ConnectionString = connectionString;m_Config.Save();elseConnectionStringSettings connSettings = new ConnectionStringSettings (name, connectionString, providerName);connSection.ConnectionStrings.Add(connSettings); m_Config.Save();ConfigurationManager.RefreshSection("appSettings");/ <summary>/ </summary>/ <param name="key"></param>publicstaticbool RemoveAppSetting( stringkey)tryif(m_Config.AppSettings.Settingskey !=null )m_Config.AppSettings.Settings.Remove(key);/m_Config.Save(ConfigurationSaveMode.Modified);m_Config.Save(ConfigurationSaveMode .Modified);ConfigurationManager .RefreshSection( "appSettings" ); return true ;.catchreturnfalse ;/ <summary>/ </summary>/ <param name="name"></param>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 ;.

    注意事项

    本文(C#中配置文件的操作.docx)为本站会员(大张伟)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




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

    三一文库
    收起
    展开