.NET Framework 類庫未提供讀寫ini檔案的相應類,不過可以使用WinAPI來處理INI檔案的讀寫,程式碼很簡單。如下:
首先有兩個API函式需放在你的class中且只能如此,放在method或(class外namespace內),都會出現編譯錯誤:
1 using System.Runtime.InteropServices;
2 [DllImport("kernel32")]
3 private static extern long WritePrivateProfileString(string section,string key,string val,string filePath);
4 [DllImport("kernel32")]
5 private static extern long GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath);
WritePrivateProfileString方法說明:
功能:將資訊寫入ini檔案
返回值:long,如果為0則表示寫入失敗,反之成功。
引數1(section):寫入ini檔案的某個小節名稱(不區分大小寫)。
引數2(key):上面section下某個項的鍵名(不區分大小寫)。
引數3(val):上面key對應的value
引數4(filePath):ini的檔名,包括其路徑(example: "c:\config.ini")。如果沒有指定路徑,僅有檔名,系統會自動在windows目錄中查詢是否有對應的ini檔案,如果沒有則會自動在當前應用程式執行的根目錄下建立ini檔案。
ini檔案結構Example:
[JXCDB] --小節名(section)
server=192.168.1.1 --server是JXCDB下的某個鍵,192.168.1.1是server鍵的值(下同)
name=sa
pwd=198910
dbName=JXC
GetPrivateProfileString方法使用說明:
功能:從ini檔案中讀取相應資訊
返回值:返回所取資訊字串的位元組長度
引數1(section):某個小節名(不區分大小寫),如果為空,則將在retVal內裝載這個ini檔案的所有小節列表。
引數2(key):欲獲取資訊的某個鍵名(不區分大小寫),如果為空,則將在retVal內裝載指定小節下的所有鍵列表。
引數3(def):當指定資訊,未找到時,則返回def,可以為空。
引數4(retVal):一個字串緩衝區,所要獲取的字串將被儲存在其中,其緩衝區大小至少為size。
引數5(size):retVal的緩衝區大小(最大字元數量)。
引數6(filePath):指定的ini檔案路徑,如果沒有路徑,則在windows目錄下查詢,如果還是沒有則在應用程式目錄下查詢,再沒有,就只能返回def了。
詳細使用Example:
首先先建立一個ini檔案,並儲存資訊:
1 WritePrivateProfileString("JXCDB", "server", ".", Application.StartupPath + "\\JXC_Server.ini");
2 WritePrivateProfileString("JXCDB", "name", txtName.Text.Trim(), Application.StartupPath + "\\JXC_Server.ini");
3 WritePrivateProfileString("JXCDB", "pwd",txtPwd.Text.Trim(), Application.StartupPath + "\\JXC_Server.ini");
4 WritePrivateProfileString("JXCDB", "DBName", "JXC", Application.StartupPath + "\\JXC_Server.ini");
說明:Application.StartupPath獲取當前專案編譯出的exe檔案的絕對路徑(不包含exe檔案的檔名)
讀取ini檔案:
1 StringBuilder stringBud = new StringBuilder(50);
2 GetPrivateProfileString("JXCDB", "server", "還未設定伺服器IP", stringBud, 50, Application.StartupPath + "\\JXC_Server.ini");
此時所讀取的server鍵對應的值已被儲存在stringBud中,只需:
1 return stringBud.ToString();
InI基本應用就這樣,很簡單吧。