如何在C 中讀寫INI檔案

2021-04-02 05:15:19 字數 3097 閱讀 7145

ini檔案就是擴充套件名為「ini」的檔案。在windows系統中,ini檔案是很多,最重要的就是「system.ini」、「system32.ini」和「win.ini」。該檔案主要存放使用者所做的選擇以及系統的各種引數。使用者可以通過修改ini檔案,來改變應用程式和系統的很多配置。但自從windows 95的退出,在windows系統中引入了登錄檔的概念,ini檔案在windows系統的地位就開始不斷下滑,這是因為登錄檔的獨特優點,使應用程式和系統都把許多引數和初始化資訊放進了登錄檔中。但在某些場合,ini檔案還擁有其不可替代的地位。本文就來**一下c#是如何對ini進行讀寫操作。 

ini檔案的結構

[section1]

keyword1 = valuel

keyword2 = value2

…… [section2]

keyword3 = value3

keyword4 = value4

● 微軟視窗2000 高階伺服器版 

● .net framework sdk正式版 

c#和win32 api函式

c#並不像c++,擁有屬於自己的類庫。c#使用的類庫是.net框架為所有.net程式開發提供的乙個共有的類庫——.net framework sdk。雖然.net framework sdk內容十分龐大,功能也非常強大,但還不能面面俱到,至少它並沒有提供直接操作ini檔案所需要的相關的類。在本文中,c#操作ini檔案使用的是windows系統自帶win32的api函式——writeprivateprofilestring()和getprivateprofilestring()函式。這二個函式都位於「kernel32.dll」檔案中。 

我們知道在c#中使用的類庫都是託管**(managed code)檔案,而win32的api函式所處的檔案,都是非託管**(unmanaged code)檔案。這就導致了在c#中不可能直接使用這些非託管**檔案中的函式。好在.net框架為了保持對下的相容,也為了充分利用以前的資源,提出了互操作,通過互操作可以實現對win32的api函式的呼叫。互操作不僅適用於win32的api函式,還可以用來訪問託管的com物件。c#中對win32的api函式的互操作是通過命名空間「system.runtime.interopservices」中的「dllimport」特徵類來實現的。它的主要作用是指示此屬性化方法是作為非託管dll的輸出實現的。下面**就是在c#利用命名空間「system.runtime.interopservices」中的「dllimport」特徵類申明上面二個win32的api函式: 

c#申明ini檔案的寫操作函式writeprivateprofilestring(): 

[ dllimport ( "kernel32" ) ]

private static extern long writeprivateprofilestring ( string 

section ,

string key , string val , string filepath ) ;

引數說明:section:ini檔案中的段落;key:ini檔案中的關鍵字;val:ini檔案中關鍵字的數值;filepath:ini檔案的完整的路徑和名稱。 

c#申明ini檔案的讀操作函式getprivateprofilestring(): 

[ 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檔案的完整路徑和名稱。 

c#中讀寫ini檔案的關鍵步驟和解決方法

c#對ini檔案進行寫操作: 

對ini檔案進行寫操作,是通過元件button2的"click"事件來實現的。這裡有一點應該注意,當在呼叫writeprivateprofilestring()對ini檔案進行寫操作的時候,如果此時在ini檔案中存在和要寫入的資訊相同的段落名稱和關鍵字,則將覆蓋此ini資訊。下面是button2元件的"click"事件對應的**清單: 

private void button2_click ( object sender , system.eventargs e ) 

c#對ini檔案進行讀操作: 

正確讀取ini的必須滿足三個前提:ini檔案的全路徑、段落名稱和關鍵字名稱。否則就無法正確讀取。你可以設定讀取不成功後的預設數值,在下面的程式中,為了直觀設定的是「無法讀取對應數值!」字串,讀取ini檔案是通過button3元件的「click」事件來實現的,下面是其對應的**清單: 

private void button3_click ( object sender , system.eventargs e ) 

c#操作ini檔案的完整源**(ini.cs)和執行介面

通過上面的這些介紹,我們不難得到用c#操作ini檔案的完整**清單(ini.cs),具體如下: 

using system ;

using system.drawing ;

using system.collections ;

using system.componentmodel ;

using system.windows.forms ;

using system.data ;

using system.runtime.interopservices ;

using system.text ;

namespace c_操作ini檔案__寫操作

protected override void dispose (  bool disposing  )  }

base.dispose (  disposing  ) ;

} 總結

通過上面的這些介紹,可以看成c#操作ini檔案的過程,其實就是c#呼叫win32的api函式的過程。掌握了如何在c#申明win32的api函式,再來操作ini就顯得非常簡單。 

如何在C 中讀寫INI檔案

ini檔案就是擴充套件名為 ini 的檔案。在windows系統中,ini檔案是很多,最重要的就是 system.ini system32.ini 和 win.ini 該檔案主要存放使用者所做的選擇以及系統的各種引數。使用者可以通過修改ini檔案,來改變應用程式和系統的很多配置。但自從windows...

如何在C 中讀寫INI檔案

ini檔案就是擴充套件名為 ini 的檔案。在windows系統中,ini檔案是很多,最重要的就是 system.ini system32.ini 和 win.ini 該檔案主要存放使用者所做的選擇以及系統的各種引數。使用者可以通過修改ini檔案,來改變應用程式和系統的很多配置。但自從windows...

如何在C 中讀寫INI檔案

檢視文章 如何在c 中讀寫ini檔案 2009 11 16 10 35 section1 keyword1 valuel keyword2 value2 section2 keyword3 value3 keyword4 value4 c 和win32api函式 c 並不像c 擁有屬於自己的類庫。c...