使用 camlzip 建立包含多個檔案的 ZIP 壓縮檔
任務
壓縮 / 建立包含多個檔案的 ZIP 壓縮檔
使用的 Opam 套件
- camlzip 使用版本測試:1.11 — 使用的函式庫:camlzip
程式碼
Zip 模組沒有提供針對目錄操作的函式。
因此,我們撰寫一個輔助函式來遍歷檔案系統。此處,針對每個一般檔案,都會使用檔案名稱作為參數呼叫給定的函式 f
。
let rec traverse_fs f directory =
if Sys.is_directory directory then
Sys.readdir directory
|> Array.iter
(fun entry ->
traverse_fs
f (directory ^ "/" ^ entry))
else
f directory
首先,我們開啟 ZIP 檔案以進行寫入。
let zip zip_filename directory_name =
let zip_file = Zip.open_out zip_filename in
然後,我們使用 Zip.copy_file_to_entry
將目錄中的每個檔案新增到 ZIP 檔案。
traverse_fs
(fun name ->
Zip.copy_file_to_entry name zip_file name)
directory_name;
為了完成壓縮檔,我們關閉 ZIP 檔案。
Zip.close_out zip_file