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实现的弹出层背景置灰-模拟(easyui dialog)
Dec 27 Javascript
js加减乘除丢失精度问题解决方法
May 16 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
May 22 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
Jun 16 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
Jun 29 Javascript
vue.js 获取当前自定义属性值
Jun 01 Javascript
Angular中ng-options下拉数据默认值的设定方法
Jun 21 Javascript
AngularJs 禁止模板缓存的方法
Nov 28 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
Feb 02 Javascript
浅谈发布订阅模式与观察者模式
Apr 09 Javascript
js实现GIF动图分解成多帧图片上传
Oct 24 Javascript
React Native登录之指纹登录篇的示例代码
Nov 03 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
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
PHP句法规则详解 入门学习
2011/11/09 PHP
php命令行用法入门实例教程
2014/10/27 PHP
ajax+php控制所有后台函数调用
2015/07/15 PHP
JQuery textlimit 显示用户输入的字符数 限制用户输入的字符数
2009/05/14 Javascript
用AJAX返回HTML片段中的JavaScript脚本
2010/01/04 Javascript
基于jQuery的前端数据通用验证库
2011/08/08 Javascript
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
JavaScript中实现异步编程模式的4种方法
2014/09/24 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
深入理解(function(){... })();
2016/08/16 Javascript
浅谈angular2路由预加载策略
2017/10/04 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
2018/09/14 Javascript
vue根据值给予不同class的实例
2018/09/29 Javascript
layui 上传文件_批量导入数据UI的方法
2019/09/23 Javascript
Python字符串中查找子串小技巧
2015/04/10 Python
解决DataFrame排序sort的问题
2018/06/07 Python
Python使用Pickle模块进行数据保存和读取的讲解
2019/04/09 Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
2019/07/03 Python
python 抓包保存为pcap文件并解析的实例
2019/07/23 Python
Django中在xadmin中集成DjangoUeditor过程详解
2019/07/24 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
2019/08/08 Python
python单例设计模式实现解析
2020/01/07 Python
Python3.7下安装pyqt5的方法步骤(图文)
2020/05/12 Python
Java基础面试题
2014/07/19 面试题
电气专业应届生求职信
2013/11/01 职场文书
境外导游求职信
2014/02/27 职场文书
机电专业毕业生求职信
2014/07/01 职场文书
个人创业事迹材料
2014/12/30 职场文书
李清照的诗词赏析(20首)
2019/08/22 职场文书
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python