15 个不稳定版本 (7 个破坏性更新)
0.8.1 | 2024年7月26日 |
---|---|
0.7.0 | 2024年5月31日 |
0.6.2 | 2023年9月3日 |
0.6.1 | 2021年7月29日 |
0.4.0 | 2020年3月25日 |
#28 在 压缩
14,119 每月下载量
用于 39 个crate(26 个直接使用)
18KB
297 行
zip-extensions-rs
为https://github.com/zip-rs/zip2提供的扩展crate,提供了对常见ZIP任务的函数,如将存档提取到目录。
使用示例
配置依赖项
将以下依赖项添加到 Cargo.toml
文件。
[dependencies]
zip = "2.1.1"
zip-extensions = "0.8.0"
有关 zip
依赖项的更多信息,请参阅 https://github.com/zip-rs/zip2。
将存档提取到目录
ZipArchiveExtensions
特性提供了 extract
方法,可用于将存档解压到目录。
use std::fs::File;
use zip_extensions::read::ZipArchiveExtensions;
...
let file = File::create(archive_file)?;
let mut archive = zip::ZipArchive::new(file)?;
archive.extract(&target_path)?;
或者,可以使用 zip_extract
辅助函数。
use zip_extensions::*;
...
let archive_file: PathBuf = ...
let target_dir: PathBuf = ...
zip_extract(&archive_file, &target_dir)?;
将存档条目提取到内存中
可以使用 zip_extract_file_to_memory
方法将条目临时提取到内存中。
use zip_extensions::*;
let archive_file = PathBuf::from_str(r#"Baloo_Da_2.zip"#)?;
let entry_path = PathBuf::from_str("BalooDa2-Medium.ttf")?;
let mut buffer : Vec<u8> = vec![];
match zip_extract_file_to_memory(&archive_file, &entry_path, &mut buffer) {
Ok(()) => { println!("Extracted {} bytes from archive.", buffer.len()) },
Err(e) => { println!("The entry does not exist.") }
};
从目录创建存档
ZipWriterExtensions
特性提供了 create_from_directory
和 create_from_directory_with_options
方法,可用于将整个目录层次结构添加到存档。
use zip::ZipWriter;
use zip_extensions::write::ZipWriterExtensions;
...
let file = File::create(archive_file)?;
let zip = ZipWriter::new(file);
zip.create_from_directory(&source_path)?;
或者,可以使用 zip_create_from_directory
辅助函数。
use zip_extensions::*;
...
let archive_file: PathBuf = ...
let source_dir: PathBuf = ...
zip_create_from_directory(&archive_file, &source_dir)?;
依赖项
~1.6–4MB
~69K SLoC