C#中配置文件的操作_第1頁(yè)
C#中配置文件的操作_第2頁(yè)
C#中配置文件的操作_第3頁(yè)
C#中配置文件的操作_第4頁(yè)
C#中配置文件的操作_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、keyword )和一個(gè)等號(hào),等號(hào)右邊的就是關(guān)鍵字對(duì).C#中配置文件的操作注:從網(wǎng)上收集整理了關(guān)于 C#中配置文件的資料, 以下是自己的學(xué)習(xí)筆記, 希望能給大家一點(diǎn)幫助,如有錯(cuò)漏,懇請(qǐng)指出。1 配置文件介紹程序配置文件實(shí)質(zhì)上是應(yīng)用程序的一種針對(duì)配置信息讀寫最簡(jiǎn)單的工具。它重要的功能就是將命令行選項(xiàng)和配置文件選項(xiàng)統(tǒng)一到一種數(shù)據(jù)結(jié)構(gòu)中,這樣的話可以在外部設(shè)置參數(shù),而無須修改代碼來達(dá)到我們想要的效果。配合上配置文件的讀寫接口,操作上也較為方便。過去常見的配置文件是以“ .ini”為后綴的文本文件。 INI,是英文“初始化( Initial )”的縮寫。正如該術(shù)語(yǔ)所表示的, INI 文件被用來對(duì)操作系

2、統(tǒng)或特定程序初始化或進(jìn)行參數(shù)設(shè)置。格式上主要分為“節(jié)” 、“參數(shù)”和“注解”三部分。后來由于Windows95 推出了注冊(cè)表的概念, INI 配置文件在系統(tǒng)中的地位就大不如前了。不過作為應(yīng)用程序的配置讀寫來說,INI還是有其牢固的地位的。后來 XML 的發(fā)展也為配置文件提供了一種更好的存儲(chǔ)格式。常見到的“config ”文件擴(kuò)展名的文件,也是在C#編程中較為常用的。C#的配置文件在編碼階段,可通過添加新項(xiàng)找到(名為“應(yīng)用程序配置文件”),添加入項(xiàng)目后名為app.config ,程序編譯后一般是以“程序名”+“ .exe”+“ .config ”命名的文件出現(xiàn)。config 文件的內(nèi)容與配置相關(guān)

3、的分為兩大部分,一部分為應(yīng)用程序的配置節(jié)( appSettings),另一部分為連接字符串的配置節(jié)( connectionStrings )??墒褂?C#提供的 ConfigurationManager(原先使用ConfigureationSettings ,現(xiàn)已棄用) 進(jìn)行讀取。 ConfigurationManager中比較重要的是 AppSettings 和 ConnectionStrings 兩個(gè)屬性,分別負(fù)責(zé)讀取應(yīng)用程序的配置項(xiàng)( appSettings )和 連 接 字 符 串的 配 置 項(xiàng)( connectionStrings )。 如 果 要修 改 配 置 文 件 項(xiàng) ,需 要

4、先 通 過ConfigurationManager 的 OpenExeConfigureation() 方法讀取信息到Configuration 類中,再修改其 中 對(duì) 應(yīng) 項(xiàng) 的 信 息 , 然 后 執(zhí) 行 保 存 , 最 后 如 果 要 將 結(jié) 果 調(diào) 用 出 來 , 還 需 要ConfigurationManager 調(diào)用 RefreshSection()方法進(jìn)行刷新。以上是對(duì)配置文件一些簡(jiǎn)單的介紹。下面我們來詳細(xì)看一下配置文件的各種功能和用法。2 INI 配置文件2.1格式INI 配置文件以 ” ini為”文件擴(kuò)展名,內(nèi)容格式為:節(jié)、參數(shù)和注解。每一個(gè) INI 文件構(gòu)成都非常類似,由若

5、干段落(section )組成,在每個(gè)帶括號(hào)的標(biāo)題下面,是若干個(gè)以單個(gè)單詞開頭的關(guān)鍵詞(. 的 ( value)。其一般形式如下:Section1KeyWord1 = ValuelKeyWord2 = Value2Section2KeyWord3 = Value3KeyWord4 = Value42.1.1節(jié)section2.1.2參數(shù)name=value2.1.3注解注解使用分號(hào)表示(;)。在分號(hào)后面的文字,直到 行 尾都全部 注解。如:; comment text2.2操作C 操 作INI文 件 使 用 的 是Windows系 統(tǒng) 自 帶Win32的API函 數(shù) WritePrivateP

6、rofileString()和 GetPrivateProfileString()函數(shù)。 二個(gè)函數(shù)都位于 “ kernel32.dll ” 文件中。C中 Win32 的 API 函數(shù)的互操作是通 命名空 “ 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 ) ;參數(shù) 明: section : INI 文件中的段落名稱;key :INI 文件中的關(guān) 字;def :無法 取 候 候的缺省數(shù) ;retVal : 取數(shù) ; size:數(shù) 的大?。籪ilePath : INI文件的完整路徑.和名稱。2.2.2寫入 DllImport ( kernel32 ) private static extern long WritePrivateProfileString ( stringsection ,string key , stri

8、ng val , string filePath ) ;參數(shù)說明: section: INI 文件中的段落;key:INI 文件中的關(guān)鍵字;val: INI 文件中關(guān)鍵字的數(shù)值; filePath: INI 文件的完整的路徑和名稱。2.3實(shí)例下面是自行編寫的一個(gè)讀寫INI 文件的類classIniFile/ 絕對(duì)路徑(默認(rèn)執(zhí)行程序目錄)publicstringFilePath get ;set ; / / 讀取 ini 文件/ / 段落名 / 鍵/ 缺省值 / 所對(duì)應(yīng)的值,如果該 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靜態(tài)方法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對(duì)象方法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文件內(nèi)容層次configuration 為根節(jié)點(diǎn),其下可以帶有appSettings 和 connectionStrings 兩個(gè)子節(jié)點(diǎn)。另外需要注意的是這兩個(gè)子節(jié)點(diǎn)中配置項(xiàng)的名稱和值并不一樣,appSettings 中為“ key”和“ value”, connectionStrings 中為“ name”和“ connectionString ”。粗略為如下所示:一個(gè)完整的config 配置文件內(nèi)容:.3.2appSettings節(jié)的操作config 文件中appSettings 的讀取主要依靠ConfigurationManager類提供的兩個(gè)屬性:AppSetti

14、ngs 和 ConnectionStrings,通過字符串索引獲取對(duì)應(yīng)配置項(xiàng)的內(nèi)容。config 文件中appSettings 的讀取主要依靠ConfigurationManager類提供的屬性:AppSettings,通過字符串索引獲取對(duì)應(yīng)配置項(xiàng)的內(nèi)容。而寫入操作,必須要先讀取配置到一個(gè)特定的配置對(duì)象中,再作修改和保存。3.2.1讀取通過 ConfigurationManager.AppSettingskey讀取例子:publicstaticstringGetAppSetting(stringkey)strings = ;trys =ConfigurationManager.AppSetti

15、ngskey;catch returns;3.2.2以配置對(duì)象為單位寫入寫入需要將配置文件讀取到Configuration 對(duì)象中,然后在其中修改,最后保存。另外注意, Configuration類是沒有構(gòu)造函數(shù)的,需要使用ConfigurationManager類的OpenExeConfiguration() 方法打開。打開與 connectionStrings 的打開相同.1、 打開當(dāng)前程序的配置文件。Configurationconfig =ConfigurationManager .OpenExeConfiguration( ConfigurationUs

16、erLevel .None );2、 打開指定路徑的配置文件。ConfigurationManager.OpenExeConfiguration(string exePath)修改config.AppSettings.Settingskey.Value = value; /修改對(duì)應(yīng)項(xiàng)config.Save(ConfigurationSaveMode .Modified); /保存ConfigurationManager .RefreshSection( appSettings ); / 刷新配置文件管理類添加config.AppSettings.Settings.A

17、dd(key, value); /添加/ 后續(xù)保存、刷新不累贅刪除config.AppSettings.Settings.Remove(key); /刪除/ 后續(xù)保存、刷新不累贅3.2.3以配置節(jié)為單位寫入通過獲取配置對(duì)象的指定節(jié),在節(jié)上進(jìn)行寫入操作。下面的修改為例(注:添加和刪除也大同小異)AppSettingsSection appSettings = (AppSettingsSection)m_Config.GetSection(appSettings); appSettings.Settingskey.Value = value;m_Config.Save();.3.3c

18、onnectionStrings節(jié)的操作config文 件 中connectionStrings的 讀 取 跟appSettings類 似 , 也 要 依 靠ConfigurationManager 類提供的屬性,這個(gè)屬性為ConnectionStrings 。寫入操作也類同。3.3.1讀取ConfigurationManager.ConnectionStringsname.ToString()3.3.2寫入打開參照 修改config.ConnectionStrings.ConnectionStringsname.ConnectionString =c

19、onnectionString;/config.ConnectionStrings.ConnectionStringsname.ProviderName =providerName; /該項(xiàng)可選添加ConnectionStringSettingsconnSetting =newConnectionStringSettings(name, connectionString,providerName);/ 生成項(xiàng)config.ConnectionStrings.ConnectionStrings.Add(connSetting); /添加/ 后續(xù)保存、刷新.刪除m_Co

20、nfig.ConnectionStrings.ConnectionStrings.Remove(ConnectionStringSettingsitem); /通過指定項(xiàng)刪除m_Config.ConnectionStrings.ConnectionStrings.Remove(name); /通過名稱刪除3.3.3以配置節(jié)為單位寫入直接上例子:ConnectionStringsSectionconnSection=(ConnectionStringsSection)m_Config.GetSection(connectionStrings); connSection.ConnectionStr

21、ingsname.ConnectionString = connectionString; m_Config.Save();3.4自定義配置節(jié)的操作利用 Configuration 的 GetSection()方法,獲取后操作。3.5實(shí)例直接上源代碼:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Configuration;namespaceTestConfig1classConfigMgr/ 如需要使用 ConfigurationManager 類還

22、必須在 “引用 ”中,引用 System.Configuration/ConfigurationSettings只是針對(duì)舊版的兼容 (向下兼容) ,不建議.使用/ 配置文件privatestaticConfigurationm_Config =ConfigurationManager .OpenExeConfiguration( ConfigurationUserLevel .None ); / 讀取當(dāng)前程序的配置文件/ / / / publicstaticstringGetAppSetting(stringkey)strings = ;trys =ConfigurationManager.A

23、ppSettingskey;catch returns;publicstaticstringGetConnString(stringname)strings = ;tryif( ConfigurationManager.ConnectionStringsname !=null )s =ConfigurationManager.ConnectionStringsname.ToString();catch returns;/ / 定義設(shè)置當(dāng)前或者其他應(yīng)用程序配置文件中的 appSettings 節(jié)點(diǎn),通過 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 ;/ / 定義設(shè)置當(dāng)前或者其他應(yīng)用程序配置文件中的 appSettings 節(jié)點(diǎn)/ / 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);./ / 定義設(shè)置當(dāng)前或者其他應(yīng)用程序配置文件中的 connectionStrings節(jié)點(diǎn),通過 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 ;/ / 定義設(shè)置當(dāng)前或者其他應(yīng)用程序配置文件中的 connectionStrings節(jié)點(diǎn)./ / keyName/ keyValue publicstaticvoid SetConnectionString(stringname, stringconnectionString,stringproviderName =System.Data.SqlClient)/ 通過獲取對(duì)應(yīng)的節(jié)來操作實(shí)現(xiàn)/providerName = System.Data.SqlClientConnectionStringsSectionconnSection =( ConnectionStringsSection)m_Config.GetSection(connectionStrings);if(connSection.ConnectionStringsname !=null )conn

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論