Node环境压缩文件和解压文件

一、压缩文件
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
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值