首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >压缩和解压缩tar.gz文件

压缩和解压缩tar.gz文件
EN

Stack Overflow用户
提问于 2021-07-15 22:26:52
回答 1查看 232关注 0票数 0

我正在尝试将一个目录压缩成一个tar.gz文件,并在使用Rust后将其解压缩。我使用的是板条箱tar = "0.4.35"flate2 = "1.0.20"。我用的是Windows。

我的代码与示例here几乎完全相同。

代码语言:javascript
复制
let tar = File::create("a.tar.gz").unwrap();
let enc = GzEncoder::new(tar, Compression::default());
let mut a = tar::Builder::new(enc);
a.append_dir_all("", "in").unwrap();
代码语言:javascript
复制
let tar = File::open("a.tar.gz").unwrap();
let dec = GzDecoder::new(tar);
let mut a = Archive::new(dec);
a.unpack("out").unwrap();

解压时总是出现错误:thread 'main' panicked at 'called Result::unwrap() on an Errvalue: Custom { kind: InvalidInput, error: TarError { desc: "failed to iterate over archive", io: Custom { kind: InvalidInput, error: "invalid gzip header" } } }', src\main.rs:21:26

我可以在7-Zip中打开生成的tar.gz,没有问题。我做错了什么,还是板条箱有问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-15 23:01:38

我找到问题了!

显然,在flate2中有读写编码器和解码器。它们具有相同的名称,因此在导入时很难区分它们。你必须小心的导入正确的代码,否则你会得到奇怪的错误。

在我的示例中,我必须导入:

代码语言:javascript
复制
use flate2::write::{GzEncoder};
use flate2::read::{GzDecoder};
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68395708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档