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 相关文章推荐
js 提交和设置表单的值
Dec 19 Javascript
javascript下4个跨浏览器必备的函数
Mar 07 Javascript
用JavaScript对JSON进行模式匹配(Part 1-设计)
Jul 17 Javascript
用js实现判断当前网址的来路如果不是指定的来路就跳转到指定页面
May 02 Javascript
使用Math.floor与Math.random取随机整数的方法详解
May 07 Javascript
Extjs表单常见验证小结
Mar 07 Javascript
css与javascript跨浏览器兼容性总结
Sep 15 Javascript
Three.js利用dat.GUI如何简化试验流程详解
Sep 26 Javascript
AngularJS基于http请求实现下载php生成的excel文件功能示例
Jan 23 Javascript
基于datepicker定义自己的angular时间组件的示例
Mar 14 Javascript
详解ES6中的Map与Set集合
Mar 22 Javascript
详细分析JavaScript中的深浅拷贝
Sep 17 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 反射机制实现动态代理的代码
2008/10/22 PHP
七款最流行的PHP本地服务器分享
2013/02/19 PHP
ThinkPHP 3.2 版本升级了哪些内容
2015/03/05 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
2016/10/13 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
JQ获取动态加载的图片大小的正确方法分享
2013/11/08 Javascript
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
js文件Cookie存取值示例代码
2014/02/20 Javascript
NodeJS学习笔记之MongoDB模块
2015/01/13 NodeJs
Node.js的包详细介绍
2015/01/14 Javascript
jquery实现聚光灯效果的方法
2015/02/06 Javascript
JavaScript中exec函数用法实例分析
2015/06/08 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
headjs实现网站并行加载但顺序执行JS
2016/11/29 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
微信小程序事件流原理解析
2019/11/27 Javascript
原生JS利用transform实现banner的无限滚动示例代码
2020/06/15 Javascript
vue动态加载SVG文件并修改节点数据的操作代码
2020/08/17 Javascript
python实现中文转换url编码的方法
2016/06/14 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
使用python生成目录树
2018/03/29 Python
Python IDLE清空窗口的实例
2018/06/25 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
2018/08/10 Python
Python 如何提高元组的可读性
2019/08/26 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
2020/03/10 Python
浅析PyCharm 的初始设置(知道)
2020/10/12 Python
印度最大的时尚购物网站:Myntra
2018/09/13 全球购物
加拿大专业美发产品购物网站:Chatters
2021/02/28 全球购物
女大学生毕业找工作的自我评价
2013/10/03 职场文书
材料加工硕士生求职信
2013/10/10 职场文书
《满井游记》教学反思
2014/02/26 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
公安纪律作风整顿心得体会
2016/01/23 职场文书
用Python进行栅格数据的分区统计和批量提取
2021/05/27 Python