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 AJAX提交中文乱码的解决方案
Jul 02 Javascript
JavaScript初学者应注意的七个细节详细介绍
Dec 27 Javascript
javascript中的=等号个数问题两个跟三个有什么区别
Oct 23 Javascript
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
Jun 26 Javascript
js动态改变select选择变更option的index值示例
Jul 10 Javascript
JS简单编号生成器实现方法(附demo源码下载)
Apr 05 Javascript
JS中sort函数排序用法实例分析
Jun 16 Javascript
JS实现的适合做faq或menu滑动效果示例
Nov 17 Javascript
微信小程序 Button 组件详解及简单实例
Jan 10 Javascript
JS基于开关思想实现的数组去重功能【案例】
Feb 18 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
May 12 Javascript
jquery实现购物车基本功能
Oct 25 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
一个好用的分页函数
2006/11/16 PHP
PHP文件上传实例详解!!!
2007/01/02 PHP
phpMyAdmin出现无法载入 mcrypt 扩展,请检查PHP配置的解决方法
2012/03/26 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
2015/09/23 PHP
简单解决微信文章图片防盗链问题
2016/12/17 PHP
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
Javascript学习笔记-详解in运算符
2011/09/13 Javascript
jquery队列函数用法实例
2014/12/16 Javascript
JS设置网页图片vspace和hspace属性的方法
2015/04/01 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
2016/06/07 Javascript
Bootstrap中datetimepicker使用小结
2016/12/28 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
我要点爆”微信小程序云开发之项目建立与我的页面功能实现
2019/05/26 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
vue + node如何通过一个Txt文件批量生成MP3并压缩成Zip
2020/06/02 Javascript
JavaScript如何操作css
2020/10/24 Javascript
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
Python MD5文件生成码
2009/01/12 Python
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
python email smtplib模块发送邮件代码实例
2018/04/26 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
Python代码注释规范代码实例解析
2020/08/14 Python
python里glob模块知识点总结
2021/01/05 Python
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
村干部任职承诺书
2015/01/21 职场文书
环境建议书
2015/02/04 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
宣传委员竞选稿
2015/11/19 职场文书
读《解忧杂货店》有感:请相信一切都是最好的安排
2019/11/07 职场文书
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python
Pandas 稀疏数据结构的实现
2021/07/25 Python