多檔案的合併與分解

2021-04-19 09:20:12 字數 1330 閱讀 6664

多檔案的合併與分解

本程式示例如何將多個檔案合併成乙個檔案,並能夠自分解。此技術在製作安裝程式時非常有用。我在本**學到了此技術,並將他整理擴充套件,能夠合併檔案和目錄,個數不限。

核心程式包括乙個合併檔案類 ccombinefiles,乙個分解檔案的類 cextractfiles 和乙個表示檔案或目錄資訊的資料類 fileinfo 檔案和目錄的資訊都由fileinfo類表示。此類定義如下:

class fileinfo  

;

合併檔案類ccombinefiles定義如下:

class ccombinefiles  

;

其中writefileinfo函式負責寫入檔案或目錄的資訊; writestring負責寫入乙個字串,字串結構是「長度+字元列表"; writelistinfo函式負責寫入要合併的檔案列表資訊,他多次呼叫writefileinfo來完成; combinefile負責寫入檔案資料; combinefile負責寫入乙個目錄的所有資料,它呼叫combinefile和writelistinfo來寫入檔案資料和目錄中的檔案列表資訊。

combine函式是供外部呼叫的函式,它將filelist中的各個檔案和目錄都合併到sztofilename中去。

合併檔案的演算法思想是:各個檔案的資料都放在合併後檔案的開頭,在合併後檔案的結尾處存放合併前的檔案列表;對這個目錄合併後就當作乙個單獨的檔案處理,只需在檔案資訊中指明這個檔案分解後生成乙個目錄,然後其資料就是乙個合併的檔案;如此第歸。

分解檔案類cextractfiles定義如下:

class cextractfiles  

;

與合併檔案類ccombinefiles一一對應,在合併中的合併函式對應都有其分解時的讀取函式。這裡就不多說了。

舉例:檔案列表包括f1,f2,f3三個檔案和目錄d,目錄d中有兩個檔案f4,f5。設合併後檔名為combine。則合併過程如下:

首先合併目錄d中的f4和f5,將他兩個的資料寫入combine;然後將f4和f5的檔案資訊寫入combine;然後將f1,f2,f3的檔案資料寫入combine;最後將檔案f1,f2,f3和目錄d的檔案資訊寫入combine。至此和並完成。

分解時從後往前讀取檔案資訊,根據檔案資訊來讀取檔案的資料,寫入分解後的檔案中去。

要想合併自分解檔案只需將合併的檔案的副檔名設為exe,並且把testbpdlg.cpp檔案中的205行指定到你編譯出的bp.exe的路徑去就可以了。例如:

詳細情況請參閱源**。

多檔案的合併與分解

多檔案的合併與分解 本程式示例如何將多個檔案合併成乙個檔案,並能夠自分解。此技術在製作安裝程式時非常有用。我在本 學到了此技術,並將他整理擴充套件,能夠合併檔案和目錄,個數不限。核心程式包括乙個合併檔案類 ccombinefiles,乙個分解檔案的類 cextractfiles 和乙個表示檔案或目錄...

檔案的合併與分割

檔案的合併與分割其實比較簡單,分割時將乙個大檔案按二進位制方式讀取,然後按二進位制寫成乙個個小檔案。合併時就把小檔案順次讀取,再寫入乙個大檔案。下面是乙個簡單的例子 檔案分割,二進位制讀取 void cmyupdatedlg onbinary byte buf 140000 緩衝區 dword dw...

檔案合併與檔案歸檔

將兩個檔案合併成乙個檔案 1 向右覆蓋,比如 ls l new pass.txt 意思是將ls查詢出來的東西覆蓋進new pass.txt這個文件中 2 與上面的一樣,不過是追加不是覆蓋 列如 cat etc passwd wc l 意思是先查詢 etc passwd中的內容,然後將內容通過管道丟給...