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