node.js使用zlib模块进行数据压缩和解压操作示例


Posted in Javascript onFebruary 12, 2020

本文实例讲述了node.js使用zlib模块进行数据压缩和解压操作。分享给大家供大家参考,具体如下:

我们可以使用 zlib 模块来对数据进行压缩和解压处理,减小数据体积,加快传输速度。

一、通过创建转换流,对文件进行压缩和解压

const fs = require('fs');
const zlib = require('zlib');
const path = require('path');
function gzip($src) {
  fs.stat($src, function (err, stats) {
    if (stats.isFile()) {
      let rs = fs.createReadStream($src);
      //zlib.createGzip()创建一个gzip转换流,是一个可读可写流。
      //通过管道将数据读取出来写入gzip流,然后又通过管道写入一个文件流中
      $dst = path.join(__dirname, path.basename($src) + '.gz');
      rs.pipe(zlib.createGzip()).pipe(fs.createWriteStream($dst));
    }
  });
}
function ungzip($src) {
  fs.stat($src, function (err, stats) {
    if (stats.isFile()) {
      let rs = fs.createReadStream($src);
      //zlib.createGunzip()创建一个gunzip转换流
      $dst = path.join(__dirname, path.basename($src, '.gz'));
      rs.pipe(zlib.createGunzip()).pipe(fs.createWriteStream($dst));
    }
  });
}
//压缩文件
gzip('./1.txt');
//解压文件
ungzip('./1.txt.gz');

zlib.createDeflate() 和 zlib.createInflate() 的使用方法与上面类似,这里就不作演示了。

二、调用 zlib 方法对数据进行压缩与解压

const zlib = require('zlib');
let data = 'hello,world';
//参数一表示要压缩的数据,可以是string或buffer
zlib.gzip(data, function (err, buffer) {
  if (err) {
    console.log(err);
  }
  //buffer就是压缩后的数据
  console.log(buffer.toString());
  //对buffer数据进行解压
  zlib.unzip(buffer, function (err, buffer) {
    console.log(buffer.toString());
  });
});

希望本文所述对大家node.js程序设计有所帮助。

Javascript 相关文章推荐
Javascript 类型转换方法
Oct 24 Javascript
24款非常有用的 jQuery 插件分享
Apr 06 Javascript
JavaScript优化专题之Loading and Execution加载和运行
Jan 20 Javascript
JS简单判断函数是否存在的方法
Feb 13 Javascript
JavaScript循环_动力节点Java学院整理
Jun 28 Javascript
想用好React的你必须要知道的一些事情
Jul 24 Javascript
详解小程序输入框闪烁及重影BUG解决方案
Aug 31 Javascript
微信小程序实现星级评价效果
Dec 28 Javascript
vue axios重复点击取消上一次请求封装的方法
Jun 19 Javascript
Vue中常用rules校验规则(实例代码)
Nov 14 Javascript
js数据类型转换与流程控制操作实例分析
Dec 18 Javascript
Express 配置HTML页面访问的实现
Nov 01 Javascript
浅析vue-router实现原理及两种模式
Feb 11 #Javascript
vue-socket.io跨域问题有效解决方法
Feb 11 #Javascript
Vue开发中遇到的跨域问题及解决方法
Feb 11 #Javascript
Vue data的数据响应式到底是如何实现的
Feb 11 #Javascript
JS实现TITLE悬停长久显示效果完整示例
Feb 11 #Javascript
vue.config.js中配置Vue的路径别名的方法
Feb 11 #Javascript
vue-resourc发起异步请求的方法
Feb 11 #Javascript
You might like
php addslashes 函数详细分析说明
2009/06/23 PHP
php入门学习知识点二 PHP简单的分页过程与原理
2011/07/14 PHP
php实现的SESSION类
2014/12/02 PHP
php基于表单密码验证与HTTP验证用法实例
2015/01/06 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
2010/03/21 Javascript
从jQuery.camelCase()学习string.replace() 函数学习
2011/09/13 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
JavaScript对IE操作的经典代码(推荐)
2014/03/10 Javascript
jquery获取多个checkbox的值异步提交给php
2015/07/07 Javascript
基于JavaScript实现右键菜单和拖拽功能
2016/11/28 Javascript
基于js文件加载优化(详解)
2018/01/03 Javascript
p5.js入门教程和基本形状绘制
2018/03/15 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
详解redux异步操作实践
2018/08/15 Javascript
javascript中关于类型判断的一些疑惑小结
2018/10/14 Javascript
vue-cli脚手架的.babelrc文件用法说明
2020/09/11 Javascript
vue实现下拉菜单树
2020/10/22 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
2021/02/07 Vue.js
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
python发腾讯微博代码分享
2014/01/10 Python
基于python编写的微博应用
2014/10/17 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
2020/03/30 Python
Python如何使用ElementTree解析xml
2020/10/12 Python
REISS美国官网:伦敦最受欢迎的时尚品牌
2019/08/16 全球购物
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
优秀女职工事迹材料
2014/02/06 职场文书
公司年终奖分配方案
2014/06/16 职场文书
新颖的化妆品活动方案
2014/08/21 职场文书
关于学习的决心书
2015/02/05 职场文书
2019七夕节祝福语36句,快来收藏吧
2019/08/06 职场文书
Python如何用re模块实现简易tokenizer
2022/05/02 Python