windows作業系統將win.ini作為記錄當前系統狀態,並根據其記錄內容對系統進行配置的一種便捷的方法,且眾多的應用軟體也廣泛的使用該型別的配置檔案來對軟體進行記錄和配置。
配置設定檔案(ini)檔案是windows作業系統中的一種特殊的ascii檔案,以ini為副檔名。該檔案也被稱為初始化檔案initialization file和概要檔案profile,通常應用程式可以擁有自己的配置設定檔案來儲存狀態資訊。一般來說私有的配置設定檔案比較小,這樣可以減少程式在初始化時讀取配置檔案時的資訊量,從而提高程式的啟動速度、提高應用程式和系統的效能。
如果帶訪問的資訊涉及到windows系統環境或是其他應用程式時,就必須在windows系統的配置檔案win.ini中記錄並在訪問的同時傳送wm_wininichange訊息給所有的頂層視窗,通知其他的程式系統配置檔案已做了更改。但由於win.ini中不僅記錄了系統的有關資訊,也儲存著許多其他應用軟體的配置資料,所以訪問的資料量要遠比私有配置檔案大的多。
掌握內容 :
了解ini檔案的結構;能夠正確靈活的應用ini檔案訪問資訊;避免ini檔案讀寫的常見誤區。
配置檔案裡的資訊之所以能為系統和終生的軟體所讀取並識別,是由於其內部對資料的訪問採用了預先約定的「項-值對(entry-value pairs)」儲存結構,並對待訪問的資料分門別類地進行調理清晰的儲存。ini檔案的結構如下:
;注釋[小節名]
關鍵字=值
…ini檔案允許有多個小節,每個小節又允許有多個關鍵字,「=」後面是該關鍵字的值。值的型別有3種:字串、整型數值和布林值。其中字串儲存在ini檔案中時沒有引號,布林值用1表示,布林假值用0表示。
注釋以分號「;」開頭。
windows作業系統專門為此提供了6個api函式來對配置設定檔案進行讀、寫:
getprivateprofileint: 從私有初始化檔案(即自定義的ini檔案)獲取整型數值。
getprivateprofilestring: 從私有初始化檔案獲取字串型值。
getprofileint:從win.ini獲取整數值。
writprivateprofilestring:寫字串到私有初始化檔案。
writeprofilestring:寫字串到win.ini。
需要指出的是,當向配置檔案儲存資訊時,不論是資料還是字串都要先轉換成字串,然後再進行儲存。
這裡只介紹私有初始化檔案,所以只涉及到3個函式---getprivateprofilestring、getprivateprofileint和writeprivateprofilestring。
ini檔案讀寫過程
ini檔案的讀和寫操作是分開的,首先介紹寫檔案的方法。
1. ini檔案的寫過程
將資訊寫入ini檔案中所用的函式為:
其中各引數的意義:
lpstring:是鍵值,也就是變數的值,不過必須為lpctstr型或cstring型的。
lpfilename:是完整的ini檔名。
例項1:將資訊寫入ini檔案
將一名學生的姓名和年齡寫入c:/student.ini檔案中。
步驟:建立基於對話方塊的mfc程式,刪除所有自動生成的控制項,然後新增按鈕控制項,並在相應的按鈕事件處新增如下**:
cstring strname,strtemp;
int nage;
strname="張三";
nage=12;
::writeprivateprofilestring("info","name",strname,"c:");
strtemp.format("%d",nage);
::writeprivateprofilestring("info","age",strtemp,"c:");
執行結果:c盤下建立了student.ini檔案,檔案內容如下:
[info]
name=張三
age=12
2. ini檔案的讀過程
將資訊從 ini檔案中讀出到程式中所用的函式為 :
其中,各引數的意義如下:
前兩個引數與writeprivateprofilestring中的意義一樣。
lpdefault:如果ini檔案中沒有前兩個引數指定的欄位名或鍵名,則將此值賦給變數。
lpreturnedstring:接收ini檔案中沒有前兩個引數指定的欄位名或鍵名,則將此值賦給變數。
lpreturnedstring:接受ini檔案中的值的cstring物件,即目的快取器。
nsize:目的快取器的大小。
lpfilename:是完整的ini檔名。
例項2:從ini檔案讀出資訊
程式將c:/student.ini檔案中的資訊讀出到程式中。
步驟:如前,在相應的button按鈕響應事件函式處,新增如下**:
cstring strstudname;
int nstudage;
getprivateprofilestring("info","name","預設姓名",strstudname.getbuffer(max_path),max_path,"c:");
//讀入整型值
nstudage=getprivateprofileint("info","age",10,"c:");
執行結果:可以通過設定斷點,來檢視strstudname和nstudage的內容。
1.路徑指示錯誤
ini檔案的路徑必須完整,檔名前面的各級目錄必須存在,否則寫入不成功,該函式返回false值。
如下程式:
cstring strname,strtemp;
int nage;
strname=」張三」;
nage=12;
::writeprivateprofilestring(「info」,」name」,strname,」c://info/student.ini」);
如果c:/info目錄不存在,那麼寫ini檔案的操作就會失敗。
解決辦法是進行檔案操作前通過以下**檢查目錄是否存在:
win32_find_data fd;
handle hfind=findfirstfile(「c://info」,&fd);
if((hfind!=invalid_handle_value)&&(fd.dwfileattributes&file_attribute_directory))
else
findclose(hfind);
2.認識上的兩個誤區
誤區一:寫檔案路徑的時候寫成諸如c:/info的形式,實際上在visual c++中,檔名的路徑中必須為//,因為在visual c++中//才表示乙個/,所以正確的格式應改為c://info.
誤區二:因為經常需要把ini檔案放在程式所在目錄,所以在寫ini檔案的函式中直接將lpfilename引數設定為檔名,如「student.ini」。這是不正確的做法,開啟ini檔案的時候,如果檔名沒有指明路徑的話,那麼這個ini檔案會儲存在windows目錄中,而不是在應用程式的當前目錄中。
解決辦法是lpfilename引數設定為「.」。
假設現在有乙個程式,要將最近使用的幾個檔名儲存下來,寫入的**如下:
cstring strtemp,strtempa;
int i;
int ncount=6;
for(i=0;i
strtemp.format(「%d」,ncount);
::writeprivateprofilestring(「filecount」,」count」,strtemp,」c:
//將檔案總數寫入,以便讀出。
以上**執行後,c盤下面userfile.ini檔案內容。
例項3:將資訊寫入ini檔案
步驟:建立基於對話方塊的mfc程式,刪除所有自動生成的控制項,然後新增按鈕控制項,並在相應的按鈕事件處新增如下**:
cstring strtemp,strtempa;
int i;
int ncount=6;
for(i=0;i
strtemp.format("%d",ncount);
::writeprivateprofilestring("filecount","count",strtemp,"c:");
執行結果:c盤下建立了usefile.ini檔案,檔案內容如下:
[usefilename]
filename0=file0.txt
filename1=file1.txt
filename2=file2.txt
filename3=file3.txt
filename4=file4.txt
filename5=file5.txt
[filecount]
count=6
例項4:從ini檔案讀出資訊
程式將c:/student.ini檔案中的資訊讀出到程式中。
步驟:如前,在相應的button按鈕響應事件函式處,新增如下**:
cstring strtemp,strtempa;
int i;
int ncount;
ncount=::getprivateprofileint("filecount","count",0,"c:");
for(i=0;i
configparser模組讀寫ini配置檔案
這篇部落格,介紹下python中利用configparser模組讀寫配置檔案的方法,僅供參考。一 讀取檔案 configparser模組支援讀取.conf和.ini等型別的檔案,那麼首先在資料夾新建乙個.ini檔案,寫入一些資訊,如下圖 示例 如下 1 coding utf 8 2 import c...
configparser輕鬆管理 ini配置檔案
配置檔案在專案中常用於資訊管理,例如資料庫資訊 伺服器資訊等,也可以用於環境切換。配置檔案主要有.ini和.conf兩種型別。這裡我們使用python的第三方庫模組configparser實現.ini配置檔案管理。首先,準備好配置檔案,檔名為conf.ini,檔案內容如下 mysql host 12...
Windows系統下pthread環境配置
記錄下win7系統,vc6.0 編譯器下配置posix多執行緒環境的步驟。配置 執行後點exract,解壓完成後再點done,可以看到三個資料夾,但只需要用到pre built.2資料夾。將pre built.2 include中的三個標頭檔案複製到vc的include資料夾內 將pre built...