解压tar包
使用flate2
与tar
一同处理use std::fs::File;
use flate2::read::GzDecoder;
use tar::Archive;
fn main() -> Result<(), std::io::Error> {
let path = "archive.tar.gz";
let tar_gz = File::open(path)?;
let tar = GzDecoder::new(tar_gz);
let mut archive = Archive::new(tar);
archive.unpack(".")?;
Ok(())
}
压缩tar包
注意这里如果使用append_path
无法正常运行。因此这里也可以不需要配置GzEncoder
。use std::fs::File;
use flate2::Compression;
use flate2::write::GzEncoder;
fn main() -> Result<(), std::io::Error> {
let tar_gz = File::create("archive.tar.gz")?;
let enc = GzEncoder::new(tar_gz, Compression::default());
let mut tar = tar::Builder::new(enc);
tar.append_dir_all("", "src/.")?;
Ok(())
}
代码中的append_dir_all
是将src中所有的数据放入到前面指定的文件夹下打包。