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 相关文章推荐
jQuery Autocomplete自动完成插件
Jul 17 Javascript
Jquery通过Ajax访问XML数据的小例子
Nov 18 Javascript
JQuery基础语法小结
Feb 27 Javascript
javascript父子页面通讯实例详解
Jul 17 Javascript
JavaScript中的return语句简单介绍
Dec 07 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
Oct 31 Javascript
axios基本入门用法教程
Mar 25 Javascript
JS生成随机打乱数组的方法示例
Dec 23 Javascript
vue控制多行文字展开收起的实现示例
Oct 11 Javascript
JS面向对象编程实现的拖拽功能案例详解
Mar 03 Javascript
Javascript类型判断相关例题及解析
Aug 26 Javascript
JS轻量级函数式编程实现XDM三
Jun 16 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+mysql不用递归实现的无限级分类实例(非递归)
2014/07/08 PHP
Linux下安装oracle客户端并配置php5.3
2014/10/12 PHP
跟我学Laravel之请求与输入
2014/10/15 PHP
php采用curl实现伪造IP来源的方法
2014/11/21 PHP
php中使用sftp教程
2015/03/30 PHP
实例解析php的数据类型
2018/10/24 PHP
PHP扩展安装方法步骤解析
2020/11/24 PHP
picChange 图片切换特效的函数代码
2010/05/06 Javascript
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
JQuery实现简单时尚快捷的气泡提示插件
2012/12/20 Javascript
jquery控制左右箭头滚动图片列表的实例
2013/05/20 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
jQuery实现根据类型自动显示和隐藏表单
2015/03/18 Javascript
JavaScript的面向对象编程基础
2015/08/13 Javascript
Node.js读写文件之批量替换图片的实现方法
2016/09/07 Javascript
js实现可旋转的立方体模型
2016/10/16 Javascript
zTree jQuery 树插件的使用(实例讲解)
2017/09/25 jQuery
浅谈vue引入css,less遇到的坑和解决方法
2018/01/20 Javascript
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
es6函数之严格模式用法实例分析
2020/03/17 Javascript
jQuery实现日历效果
2020/09/11 jQuery
JavaScript代码实现简单计算器
2020/12/27 Javascript
分享Python开发中要注意的十个小贴士
2016/08/30 Python
Python装饰器实现几类验证功能做法实例
2017/05/18 Python
Python sqlite3事务处理方法实例分析
2017/06/19 Python
python 处理string到hex脚本的方法
2018/10/26 Python
python如何给字典的键对应的值为字典项的字典赋值
2019/07/05 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
Django如何使用redis作为缓存
2020/05/21 Python
html5使用canvas画三角形
2014/12/15 HTML / CSS
新加坡领先的时尚生活方式零售品牌:CHARLES & KEITH
2018/01/16 全球购物
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
在js中修改html body的样式
2021/11/11 Javascript
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python
基于Android10渲染Surface的创建过程
2022/08/14 Java/Android