一、压缩文件
1.1压缩文件需要用到得模块是 archiver(下载量蛮高得几百万每周)
文档地址:https://www.npmjs.com/package/archiver
1.2 安装
npm install archiver --save
1.3示例代码
const archiver = require('archiver')
const fs = require('fs')
const archive = async (path) => {
//path是一个路径
return new Promise((reslove, reject) => {
//创建一个可写入得流
const output = fs.createWriteStream(path + '.zip');
//创建要生成得压缩类型 tar |zip
const zipArchiver = archiver('zip');
//用管道将数据归档到文件中
zipArchiver.pipe(output);
//判断该文件夹中是否有问题文件
const files = fs.readdirSync(path);
if (files.length == 0) {
return false
}
for (const key of files) {
const subcatalog = path + '/' + key;
const stats = fs.statSync(subcatalog)
if (stats.isDirectory()) {
//文件夹类型 该文件夹下的所有文件都会压缩,包括子目录等
//从子目录(subcatalog)追加文件,并在存档中将其命名为key
zipArchiver.directory(subcatalog, key)
} else {
//文件类型 单个文件
zipArchiver.file(subcatalog, { name: key });
}
}
//
output.on('close', function () {
reslove(true)
});
zipArchiver.on('warning', function (err) {
if (err.code === 'ENOENT') {
log.trace("warning" + err)
reject(false)
} else {
log.trace(" throw error" + err)
reject(false)
}
});
zipArchiver.on('error', function (err) {
log.trace("error" + err)
reject(false)
});
zipArchiver.finalize();
})
}
二、解压文件
2.1压缩文件需要用到得模块是 node-stream-zip
文档地址:https://www.npmjs.com/package/node-stream-zip
2.2 安装
npm i node-stream-zip
2.1 示例代码
const StreamZip = require('node-stream-zip');
/**
* @function Unzip 解压文件
* @file 压缩包的地址
* @outfile :要解压得目录
*/
const Unzip = async (file, outfile) => {
return new Promise((reslove, reject) => {
const zip = new StreamZip({ file: file, storeEntries: true })
zip.on('error', err => {
console.log('errerrerrerr', err);
reject(false)
});
zip.on('ready', () => {
if (!existsSync(outfile)) { mkdirSync(outfile); }
zip.extract(null, outfile, (err, count) => {
// console.log(err ? 'Extract error' : `Extracted ${count} entries`);
console.log(err);
if (err) {
reject(false)
}
else {
reslove(true)
}
zip.close();
});
});
}).catch(err => {
console.log('eror', err);
})
}
三、另外一种解压文件的方法
https://blog.csdn.net/weixin_42952411/article/details/107018796