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 表格工具集
Apr 25 Javascript
基于jQuery的图片不完全按比例自动缩小
Jul 11 Javascript
使用jQuery获得内容以及内容的属性
Feb 26 Javascript
javascript实现平滑无缝滚动
Aug 09 Javascript
Angular2 父子组件数据通信实例
Jun 22 Javascript
使用Vue自定义数字键盘组件(体验度极好)
Dec 19 Javascript
把vue-router和express项目部署到服务器的方法
Feb 21 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
Sep 28 Javascript
JavaScript创建防篡改对象的方法分析
Dec 30 Javascript
jquery实现弹窗(系统提示框)效果
Dec 10 jQuery
TypeScript之调用栈的实现
Dec 31 Javascript
vue完美实现el-table列宽自适应
May 08 Vue.js
浅析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
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
Discuz!X中SESSION机制实例详解
2015/09/23 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
2017/07/10 PHP
Yii2框架自定义验证规则操作示例
2019/02/08 PHP
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
jquery表单插件Autotab使用方法详解
2016/06/24 Javascript
浅谈JavaScript 数据属性和访问器属性
2016/09/01 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
2019/06/25 Javascript
vue 实现单选框设置默认选中值
2019/11/07 Javascript
[00:57]英雄,你的补给到了!
2020/11/13 DOTA
Python的Django框架中URLconf相关的一些技巧整理
2015/07/18 Python
scrapy爬虫实例分享
2017/12/28 Python
Python判断对象是否为文件对象(file object)的三种方法示例
2019/04/26 Python
python3 实现的对象与json相互转换操作示例
2019/08/17 Python
django中使用POST方法获取POST数据
2019/08/20 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
2020/02/20 Python
win10安装python3.6的常见问题
2020/07/01 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
2021/02/01 Python
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
Spartoo瑞典:鞋子、包包和衣服
2018/09/15 全球购物
农业大学毕业生的个人自我评价
2013/10/11 职场文书
善意的谎言事例
2014/02/15 职场文书
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
婚前协议书怎么写
2014/04/15 职场文书
2014年政府采购工作总结
2014/12/09 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
2015年行政工作总结范文
2015/04/09 职场文书
同学会感言
2015/07/30 职场文书
公司借款担保书
2015/09/22 职场文书
教你怎么用Python监控愉客行车程
2021/04/29 Python
Python中三种花式打印的示例详解
2022/03/19 Python
Python matplotlib多个子图绘制整合
2022/04/13 Python
生命的关键成分来自太空?陨石说是的
2022/04/29 数码科技