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:Array类型全面解析
May 19 Javascript
jquery实现简单Tab切换菜单效果
Jul 17 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
Dec 16 Javascript
详解Vue 非父子组件通信方法(非Vuex)
May 24 Javascript
深入理解vue2.0路由如何配置问题
Jul 18 Javascript
AngularJS集合数据遍历显示的实例
Dec 27 Javascript
基于vue开发的在线付费课程应用过程
Jan 25 Javascript
vue 左滑删除功能的示例代码
Jan 28 Javascript
vue cli使用融云实现聊天功能的实例代码
Apr 19 Javascript
vue-loader中引入模板预处理器的实现
Sep 04 Javascript
vue实现分页加载效果
Dec 24 Javascript
js实现的订阅发布者模式简单示例
Mar 14 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 判断变量类型实现代码
2009/10/23 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
JQuery切换显示的效果实例代码
2013/02/27 Javascript
JS实现一键回顶功能示例代码
2013/10/28 Javascript
jQuery jcrop插件截图使用方法
2013/11/20 Javascript
屏蔽IE弹出"您查看的网页正在试图关闭窗口,是否关闭此窗口"的方法
2013/12/31 Javascript
JS判断当前页面是否在微信浏览器打开的方法
2015/12/08 Javascript
js实现瀑布流的三种方式比较
2020/06/28 Javascript
Node.js插件安装图文教程
2016/05/06 Javascript
关于网页中的无缝滚动的js代码
2016/06/09 Javascript
javascript中href和replace的比较(详解)
2016/11/25 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
2018/04/17 jQuery
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
详解vue 自定义marquee无缝滚动组件
2019/04/09 Javascript
js实现弹出框的拖拽效果实例代码详解
2019/04/16 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
JS document文档的简单操作完整示例
2020/01/13 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
Python 查看list中是否含有某元素的方法
2018/06/27 Python
python读取文本中的坐标方法
2018/10/14 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
Python数据集切分实例
2018/12/08 Python
Django REST框架创建一个简单的Api实例讲解
2019/11/05 Python
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
请说出以下代码输出什么
2013/08/30 面试题
董事长助理岗位职责
2014/02/18 职场文书
建议书标准格式
2014/03/12 职场文书
幼儿园春季开学寄语
2014/04/03 职场文书
2014年文学毕业生自我鉴定
2014/04/23 职场文书
小学教师师德演讲稿
2014/05/06 职场文书
银行竞聘演讲稿
2014/05/16 职场文书
惊天动地观后感
2015/06/10 职场文书
JavaScript中isPrototypeOf函数
2021/11/07 Javascript