windows11虽然自带了unzip工具,但是使用起来还是很不舒服,于是决定自己写一个解压的命令行程序
命令行解析的包使用clap
解压所用的库为zip
解压函数为
use std::path::Path;
use std::fs;
use std::option::Option::Some;
use std::io;
// zip_file是文件的路径,target是目标文件夹的路径
pub fn extra(zip_file: &Path, target: &Path) {
// 从路径得到打开文件
let achieve = std::fs::File::open(zip_file).expect("未找到文件");
let mut zip = zip::ZipArchive::new(achieve).expect("创建压缩包文件失败");
// 目标路径不存在,则创建一个新的路径
if !target.exists() {
// 递归地创建文件夹
fs::create_dir_all(target).unwrap_or_else(|_| {
panic!("新建文件夹过程中出错");
})
}
for i in 0..zip.len() {
let mut file = zip.by_index(i).unwrap();
let outpath = match file.enclosed_name() {
Some(path) => Path::joi