INI文件就是擴展名為“ini”的文件。在Windows系統中,INI文件是很多,最重要的就是“System.ini”、“System32.ini”和“Win.ini”。該文件主要存放用戶所做的選擇以及系統的各種參數。用戶可以通過修改INI文件,來改變應用程式和系統的很多配置。但自從Windows ...
INI文件就是擴展名為“ini”的文件。在Windows系統中,INI文件是很多,最重要的就是“System.ini”、“System32.ini”和“Win.ini”。該文件主要存放用戶所做的選擇以及系統的各種參數。用戶可以通過修改INI文件,來改變應用程式和系統的很多配置。但自從Windows 95的退出,在Windows系統中引入了註冊表的概念,INI文件在Windows系統的地位就開始不斷下滑,這是因為註冊表的獨特優點,使應用程式和系統都把許多參數和初始化信息放進了註冊表中。但在某些場合,INI文件還擁有其不可替代的地位。本文就來探討一下C#是如何對INI進行讀寫操作。
INI文件的結構
INI文件是一種按照特點方式排列的文本文件。每一個INI文件構成都非常類似,由若幹段落(section)組成,在每個帶括弧的標題下麵,是若幹個以單個單詞開頭的關鍵詞(keyword)和一個等號,等號右邊的就是關鍵字對應的值(value)。其一般形式如下:
[Section1]
KeyWord1 = Valuel
KeyWord2 = Value2
……
[Section2]
KeyWord3 = Value3
KeyWord4 = Value4
C#操作INI文件使用的是Windows系統自帶Win32的API函數WritePrivateProfileString()和GetPrivateProfileString()函數。這二個函數都位於“kernel32.dll”文件中。
C#利用命名空間“System.Runtime.InteropServices”中的“DllImport”特征類申明上面二個Win32的API函數:
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section,string key,string val, string filePath);
參數說明:section:INI文件中的段落;key:INI文件中的關鍵字;
val:INI文件中關鍵字的數值;filePath:INI文件的完整的路徑和名稱。
[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文件的完整路徑和名稱。
對INI文件進行寫操作,如果此時在INI文件中存在和要寫入的信息相同的段落名稱和關鍵字,將覆蓋此INI信息。
正確讀取INI的必須滿足三個前提:INI文件的全路徑、段落名稱和關鍵字名稱。