当前位置: 首页 > article >正文

nodejs实现文件/目录的压缩和解压

在nodejs里实现文件/目录压缩和解压可以通过 compressing 库来实现,compressing 库目前支持多种压缩格式:tar、gzip、tgz、zip。

安装

npm install compressing

使用的时候需要导入

const compressing = require('compressing');

压缩/解压文件

压缩单个文件

compressing.zip.compressFile('/Users/fkong/test/compressing-demo/package.json', '/Users/fkong/test/package.json.zip')
  .then(() => {
    console.log('success');
  })
  .catch(err => {
    console.log(err);
  });

如果要压缩多个文件,可以使用stream的方式,如下:

const zipStream = new compressing.zip.Stream();
zipStream.addEntry('/Users/fkong/test/compressing-demo/package.json');
zipStream.addEntry('/Users/fkong/test/compressing-demo/package-lock.json');
const destStream = fs.createWriteStream('/Users/fkong/test/destination.zip');
zipStream.pipe(destStream)
  .on('finish', () => {
    console.log('success');
  })
  .on('error', () => {
    console.log('failure');
  });

解压文件到指定目录

compressing.zip.uncompress('/Users/fkong/test/package.json.zip', '/tmp')
  .then(() => {
    console.log('success');
  })
  .catch(err => {
    console.log(err);
  });

压缩/解压目录

压缩一个目录

compressing.zip.compressDir('/Users/fkong/test/compressing-demo', '/Users/fkong/test/compressing-demo.zip')
  .then(() => {
    console.log('success');
  })
  .catch(err => {
    console.log(err);
  });

解压文件到指定目录

compressing.zip.uncompress('/Users/fkong/test/compressing-demo.zip', '/tmp')
  .then(() => {
    console.log('success');
  })
  .catch(err => {
    console.log(err);
  });

http://www.kler.cn/a/156165.html

相关文章:

  • 鸿蒙next版开发:订阅应用事件(ArkTS)
  • 深入剖析【C++继承】:单一继承与多重继承的策略与实践,解锁代码复用和多态的编程精髓,迈向高级C++编程之旅
  • Debezium系列之:发件箱事件路由器
  • 【贪心算法】——力扣763. 划分字母区间
  • 【深度学习】LSTM、BiLSTM详解
  • PHP爬虫快速获取京东商品详情(代码示例)
  • 【微信小程序】上传头像 微信小程序内接小程序客服
  • C++ day51 买卖股票最佳时期
  • 计算机网络——习题
  • 【PTA-C语言】编程练习3 - 循环结构Ⅱ
  • 安装配置JDK1.8
  • 单例模式的实现
  • 字符串转换整数
  • 一个完整的手工构建的cuda动态链接库工程 03记
  • SQL Server 2016(创建数据表)
  • qt-C++笔记之识别点击鼠标右键、点击位置以及Qt坐标系详解
  • flutter-web中使用js工具类
  • Linux系统配置深度学习环境之cudnn安装
  • 40 mysql join 的实现
  • jmeter下载地址
  • [Java] 模拟Jdk 以及 CGLib 代理原理
  • 网络接口规范
  • springBoot整合task
  • uniapp中uni.navigateBack返回后刷新页面数据
  • 线程池大小设置多少,比较合适?
  • 如何从 Jira 成功迁移到极狐GitLab,看这个就够了!