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 相关文章推荐
ajax无刷新动态调用股票信息(改良版)
Nov 01 Javascript
jQuery AjaxQueue改进步骤
Oct 06 Javascript
Jquery 数组操作大全个人总结
Nov 13 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
Aug 16 Javascript
JavaScript DSL 流畅接口(使用链式调用)实例
Mar 15 Javascript
jquery移动点击的项目到列表最顶端的方法
Jun 24 Javascript
不同js异步函数同步的实现方法
May 28 Javascript
微信小程序 label 组件详解及简单实例
Jan 10 Javascript
react-redux中connect的装饰器用法@connect详解
Jan 13 Javascript
SVG实现时钟效果
Jul 17 Javascript
vue spa应用中的路由缓存问题与解决方案
May 31 Javascript
layui监听单元格编辑前后交互的例子
Sep 16 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
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
2014/12/25 PHP
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
Jquery Ajax请求代码(2)
2011/01/07 Javascript
jquery 年会抽奖程序
2011/12/22 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
THREE.JS入门教程(2)着色器-上
2013/01/24 Javascript
jQuery 选择器详解
2015/01/19 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
2016/08/29 Javascript
概述javascript在Google IE中的调试技巧
2016/11/24 Javascript
Vue分页组件实例代码
2017/04/17 Javascript
vue2.0.js的多级联动选择器实现方法
2018/02/09 Javascript
Vue.js 实现微信公众号菜单编辑器功能(一)
2018/05/08 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
[01:01:52]完美世界DOTA2联赛PWL S2 GXR vs Magma 第二场 11.25
2020/11/26 DOTA
利用Python如何批量更新服务器文件
2018/07/29 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
详解Python Qt的窗体开发的基本操作
2019/07/14 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
详解python with 上下文管理器
2020/09/02 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
Html5中的桌面通知Notification的实现
2018/09/25 HTML / CSS
美国著名的家居用品购物网站:Bed Bath & Beyond
2018/01/05 全球购物
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
女士和男士时尚鞋在线购物:Shoespie
2019/02/28 全球购物
斐乐美国官方网站:FILA美国
2019/03/01 全球购物
装潢设计实习自我鉴定
2013/09/19 职场文书
新闻系毕业生推荐信
2013/11/16 职场文书
30年同学聚会邀请函
2014/01/25 职场文书
大学迎新生标语
2014/10/06 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
企业群众路线教育实践活动心得体会
2014/11/03 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
消费者理赔投诉书
2015/07/02 职场文书