5个版本 (稳定)
1.2.2 | 2022年4月23日 |
---|---|
1.0.0 | 2022年4月10日 |
0.1.1 | 2022年4月1日 |
在压缩中排名第665
每月下载量98次
45KB
1K SLoC
Zip归档
zip_archive
是一个将目录归档为特定压缩格式的库。支持多线程。
7z格式的要求
要使用7z归档格式,您需要安装7z或根据操作系统获取可执行文件。
Windows 10
- 安装7-Zip。
- 在已安装的7z文件夹中找到7z.exe文件,并将其添加到路径中。或者将其放置在项目根文件夹中。
macOS
- 下载macOS的7-Zip控制台版本可执行文件。
- 将7zz可执行文件放置在主目录中。
示例
有关更多信息示例,请参阅文档页面。
lib.rs
:
Zip归档
zip_archive
是一个将目录归档为特定压缩格式的库。支持多线程。
支持的格式
格式 | 描述 |
---|---|
xz | 使用[xz2] crate。 |
7z | 参见要求部分。 |
[zip] | 使用[zip] crate。 |
示例
- 使用4个线程压缩根目录。
use std::path::PathBuf;
use zip_archive::Archiver;
let origin = PathBuf::from("./origin");
let dest = PathBuf::from("./dest");
let thread_count = 4;
let mut archiver = Archiver::new();
archiver.push(origin);
archiver.set_destination(dest);
archiver.set_thread_count(thread_count);
match archiver.archive(){
Ok(_) => (),
Err(e) => println!("Cannot archive the directory! {}", e),
};
- 使用容器的迭代器压缩每个目录。
use std::path::PathBuf;
use zip_archive::Archiver;
let origin = PathBuf::from("./origin");
let dest = PathBuf::from("./dest");
let mut archiver = Archiver::new();
archiver.push_from_iter(vec!["./origin/dir1", "./origin/dir2", "./origin/dir3"].into_iter());
archiver.set_destination(dest);
match archiver.archive(){
Ok(_) => (),
Err(e) => println!("Cannot archive the directory! {}", e),
};
- 使用.xz格式压缩目录。
use std::path::PathBuf;
use zip_archive::Format;
use zip_archive::{Archiver, get_dir_list_with_depth};
let origin = PathBuf::from("./origin"); // Change to the wanted directory.
let dest = PathBuf::from("./dest");
let mut archiver = Archiver::new();
archiver.push(origin);
archiver.set_destination(dest);
archiver.set_format(Format::Xz); // == `archiver.set_format_str("xz");`
match archiver.archive(){
Ok(_) => (),
Err(e) => println!("Cannot archive the directory! {}", e),
};
7z格式的要求
要使用7z归档格式,您需要安装7z或根据操作系统获取可执行文件。
Windows 10
- 安装7-Zip。
- 在已安装的程序文件夹中找到7z.exe文件,并将其添加到路径中。或者将其放置在项目根文件夹中。
macOS
- 下载macOS的7-Zip控制台版本可执行文件。
- 将7zz可执行文件放置在主目录中。
依赖关系
~8–17MB
~223K SLoC