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 相关文章推荐
JS链式调用的实现方法
Mar 07 Javascript
浅谈javascript中的instanceof和typeof
Feb 27 Javascript
Javascript验证Visa和MasterCard信用卡号的方法
Jul 27 Javascript
基于jQuery实现收缩展开功能
Mar 18 Javascript
js的各种排序算法实现(总结)
Jul 23 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
Aug 01 Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
Aug 17 Javascript
js格式化时间的简单实例
Nov 27 Javascript
jQuery与js实现颜色渐变的方法
Dec 30 Javascript
Vue.js 单页面多路由区域操作的实例详解
Jul 17 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
Sep 28 Javascript
jquery操作select常见方法大全【7种情况】
May 28 jQuery
浅析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
成本8450万,票房仅2亿,口碑两极分化,又一部DC电影扑街了
2020/04/09 欧美动漫
修改了一个很不错的php验证码(支持中文)
2007/02/14 PHP
精通php的十大要点(上)
2009/02/04 PHP
PHP的cURL库简介及使用示例
2015/02/06 PHP
php指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
JQuery在页面中添加和除移DOM示例代码
2013/06/24 Javascript
GridView中获取被点击行中的DropDownList和TextBox中的值
2013/07/18 Javascript
js中事件的处理与浏览器对象示例介绍
2013/11/29 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
用JavaScript实现PHP的urlencode与urldecode函数
2015/08/13 Javascript
Webpack如何引入bootstrap的方法
2017/06/17 Javascript
基于 webpack2 实现的多入口项目脚手架详解
2017/06/26 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
vue中的v-model原理,与组件自定义v-model详解
2020/08/04 Javascript
vue中activated的用法
2021/01/03 Vue.js
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
[01:10:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第一场 3月4日
2021/03/11 DOTA
python实现识别手写数字 python图像识别算法
2020/03/23 Python
python 借助numpy保存数据为csv格式的实现方法
2018/07/04 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
2018/11/21 Python
Django rest framework jwt的使用方法详解
2019/08/08 Python
Django 构建模板form表单的两种方法
2020/06/14 Python
python定义具名元组实例操作
2021/02/28 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
HTML5 Canvas实现烟花绽放特效
2016/03/02 HTML / CSS
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
应届实习生的自我评价范文
2014/01/05 职场文书
狼和鹿教学反思
2014/02/05 职场文书
员工年终考核评语
2014/12/31 职场文书
爱心募捐通知范文
2015/04/27 职场文书
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技