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实现动态菜单添加的实例代码
Jul 05 Javascript
js如何实现设计模式中的模板方法
Jul 23 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
Feb 17 Javascript
JavaScript预解析及相关技巧分析
Apr 21 Javascript
js简单时间比较的方法
Aug 02 Javascript
从0开始学Vue
Oct 27 Javascript
angularjs实现天气预报功能
Jun 16 Javascript
解决vue-router中的query动态传参问题
Mar 20 Javascript
Js通过AES加密后PHP用Openssl解密的方法
Jul 12 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
Oct 16 Javascript
es6 for循环中let和var区别详解
Jan 12 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
Jan 19 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
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
2009/07/01 PHP
PHP常用的小程序代码段
2015/11/14 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
导航跟随滚动条置顶移动示例代码
2013/09/11 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
JavaScript实现自动变换表格边框颜色
2015/05/08 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
2017/07/02 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
2018/07/01 Javascript
微信小程序开发实现的IP地址查询功能示例
2019/03/28 Javascript
js中数组常用方法总结(推荐)
2019/04/09 Javascript
Vue发布项目实例讲解
2019/07/17 Javascript
JS实现的定时器展示简单秒表、页面弹框及跳转操作完整示例
2020/01/26 Javascript
详解python实现线程安全的单例模式
2018/03/05 Python
浅谈python numpy中nonzero()的用法
2018/04/02 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
django 前端页面如何实现显示前N条数据
2020/03/16 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
Python日志logging模块功能与用法详解
2020/04/09 Python
什么是python类属性
2020/06/10 Python
Keras 数据增强ImageDataGenerator多输入多输出实例
2020/07/03 Python
CSS3之背景尺寸Background-size使用介绍
2013/10/14 HTML / CSS
彪马加拿大官网:PUMA加拿大
2018/10/04 全球购物
美国帽子俱乐部商店:Hat Club
2019/07/05 全球购物
初三家长会邀请函
2014/01/18 职场文书
员工安全生产承诺书
2014/05/22 职场文书
先进个人申报材料
2014/12/30 职场文书
杭州黄龙洞导游词
2015/02/10 职场文书
教师创先争优承诺书
2015/04/27 职场文书
政工师工作总结2015
2015/05/26 职场文书
2015年政教主任工作总结
2015/07/23 职场文书
PHP中strval()函数实例用法
2021/06/07 PHP
一次MySQL启动导致的事故实战记录
2021/09/15 MySQL
使用Ajax实现进度条的绘制
2022/04/07 Javascript