使用 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

食譜無法運作?註解不清楚或已過時?

開啟一個 issue為此食譜貢獻