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 相关文章推荐
Discuz! 6.1_jQuery兼容问题
Sep 23 Javascript
JavaScript 存在陷阱 删除某一区域所有节点
May 10 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
Sep 06 Javascript
利用javascript的面向对象的特性实现限制试用期
Aug 04 Javascript
运算符&&的三个不同层次
Apr 07 Javascript
基于jquery实现发送文章到手机的代码
Dec 26 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
Jul 27 Javascript
Vue监听数组变化源码解析
Mar 09 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
Sep 06 Javascript
JS中移除非数字最多保留一位小数
May 09 Javascript
javascript中this的用法实践分析
Jul 29 Javascript
jquery自定义组件实例详解
Dec 31 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
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
PHP中开启gzip压缩的2种方法
2015/01/31 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
PHP正则表达式函数preg_replace用法实例分析
2020/06/04 PHP
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
2012/12/16 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
Nginx上传文件全部缓存解决方案
2015/08/17 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
简易的JS计算器实现代码
2016/10/18 Javascript
requirejs按需加载angularjs文件实例
2017/06/08 Javascript
vue自定义全局组件(自定义插件)的用法
2018/01/30 Javascript
Vue中控制v-for循环次数的实现方法
2018/09/26 Javascript
Vue使用NPM方式搭建项目
2018/10/25 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
2019/05/02 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
viewer.js实现图片预览功能
2020/06/24 Javascript
python操作MySQL数据库的方法分享
2012/05/29 Python
python Django连接MySQL数据库做增删改查
2013/11/07 Python
win7安装python生成随机数代码分享
2013/12/27 Python
python控制台显示时钟的示例
2014/02/24 Python
tensorflow: 查看 tensor详细数值方法
2018/06/13 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
简单的辞职信范文
2014/01/18 职场文书
办公自动化专业大学生职业规划书
2014/03/06 职场文书
留学顾问岗位职责
2014/04/14 职场文书
支行行长竞聘演讲稿
2014/05/15 职场文书
主题团日活动总结
2014/06/25 职场文书
韩语专业职业生涯规划范文:成功之路就在我们脚下
2014/09/11 职场文书
写给医生的感谢信
2015/01/22 职场文书
求职意向书范本
2015/05/11 职场文书
2016大学迎新欢迎词
2015/09/29 职场文书
诚信高考倡议书
2019/06/24 职场文书
好段摘抄大全(48句)
2019/08/08 职场文书
利用js实现简单开关灯代码
2021/11/23 Javascript