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入门教程(2) JS基础知识
Jan 31 Javascript
jquery 注意事项与常用语法小结
Jun 07 Javascript
不提示直接关闭网页窗口的JS示例代码
Dec 17 Javascript
JS获取文本框,下拉框,单选框的值的简单实例
Feb 26 Javascript
jQuery实现简单的点赞效果
May 29 Javascript
Jquery实现$.fn.extend和$.extend函数
Apr 14 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
May 19 Javascript
js实现华丽的九九乘法表效果
Mar 29 Javascript
vue中v-model的应用及使用详解
Jun 27 Javascript
JS数组扁平化(flat)方法总结详解
Jun 24 Javascript
ionic+html5+API实现双击返回键退出应用
Sep 17 Javascript
Openlayers实现点闪烁扩散效果
Sep 24 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&mysql 日期操作小记
2012/02/27 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
2013/06/18 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
php实现ip白名单黑名单功能
2015/03/12 PHP
PHPExcel简单读取excel文件示例
2016/05/26 PHP
PHP二维数组矩形转置实例
2016/07/20 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
Iframe 自适应高度并实时监控高度变化的js代码
2009/10/30 Javascript
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
2018/10/19 Javascript
vue transition 在子组件中失效的解决
2019/11/12 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
Vue computed 计算属性代码实例
2020/04/22 Javascript
通过JS判断网页是否为手机打开
2020/10/28 Javascript
js实现日历
2020/11/07 Javascript
利用Psyco提升Python运行速度
2014/12/24 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
PyTorch中Tensor的数据统计示例
2020/02/17 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
英国家电直销:Appliances Direct
2016/09/22 全球购物
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
ColourPop美国官网:卡拉泡泡,洛杉矶彩妆品牌
2019/04/28 全球购物
简述你对Statement,PreparedStatement,CallableStatement的理解
2013/03/25 面试题
StringBuilder和String的区别
2015/05/18 面试题
人事助理自荐信
2014/02/02 职场文书
社团招新策划书
2014/02/04 职场文书
公务员试用期满考核材料
2014/05/22 职场文书
关于长城的导游词
2015/01/30 职场文书
如何写好竞聘报告
2019/04/03 职场文书
导游词之开封禹王台风景区
2019/12/02 职场文书