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压缩

Download history 3766/week @ 2024-05-04 2787/week @ 2024-05-11 2624/week @ 2024-05-18 2534/week @ 2024-05-25 3791/week @ 2024-06-01 2919/week @ 2024-06-08 2821/week @ 2024-06-15 2587/week @ 2024-06-22 2213/week @ 2024-06-29 2625/week @ 2024-07-06 3193/week @ 2024-07-13 3131/week @ 2024-07-20 3331/week @ 2024-07-27 3249/week @ 2024-08-03 3755/week @ 2024-08-10 3121/week @ 2024-08-17

14,119 每月下载量
用于 39 个crate(26 个直接使用)

MIT 协议

18KB
297

zip-extensions-rs

Rust Crates.io

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_directorycreate_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