zoukankan      html  css  js  c++  java
  • Node.js压缩与解压数据

    Node.js中提供了一个很好的库Zlib来压缩解压数据。

    一、压缩缓冲区

    Zlib中有下面几个函数方便解压缩缓冲区.

    gzip/gunzip:标准gzip压缩.

    deflate/inflate:基于Huffman编码的标准deflate压缩算法。

    deflateRaw/inflateRaw:针对原始缓冲区的deflate压缩算法。

    它们的函数都是function(buffer,callback).

    var zlib = require("zlib");
    var input = '...............text...............';
    zlib.deflate(input, function(err, buffer) {
      if (!err) {
        console.log("deflate (%s): ", buffer.length, buffer.toString('base64'));
        zlib.inflate(buffer, function(err, buffer) {
          if (!err) {
            console.log("inflate (%s): ", buffer.length, buffer.toString());
          }
        });
        zlib.unzip(buffer, function(err, buffer) {
          if (!err) {
            console.log("unzip deflate (%s): ", buffer.length, buffer.toString());
          }
        });
      }
    });
    
    zlib.deflateRaw(input, function(err, buffer) {
      if (!err) {
        console.log("deflateRaw (%s): ", buffer.length, buffer.toString('base64'));
        zlib.inflateRaw(buffer, function(err, buffer) {
          if (!err) {
            console.log("inflateRaw (%s): ", buffer.length, buffer.toString());
          }
        });
      }
    });
    
    zlib.gzip(input, function(err, buffer) {
      if (!err) {
        console.log("gzip (%s): ", buffer.length, buffer.toString('base64'));
        zlib.gunzip(buffer, function(err, buffer) {
          if (!err) {
            console.log("gunzip (%s): ", buffer.length, buffer.toString());
          }
        });
        zlib.unzip(buffer, function(err, buffer) {
          if (!err) {
            console.log("unzip gzip (%s): ", buffer.length, buffer.toString());
          }
        });
      }
    });
    "C:Program Files (x86)JetBrainsWebStorm 11.0.3in
    unnerw.exe" F:
    odejs
    ode.exe zlib_buffers.js
    deflate (18):  eJzT00MBJakVJagiegB9Zgcq
    deflateRaw (12):  09NDASWpFSWoInoA
    gzip (30):  H4sIAAAAAAAAC9PTQwElqRUlqCJ6AIq+x+AiAAAA
    inflate (34):  ...............text...............
    unzip deflate (34):  ...............text...............
    inflateRaw (34):  ...............text...............
    gunzip (34):  ...............text...............
    unzip gzip (34):  ...............text...............
    
    Process finished with exit code 0

    二、压缩文件

    可通过pipe()将压缩/解压对象从一个流输送到另一个流。

    var zlib = require("zlib");
    var gzip = zlib.createGzip();
    var fs = require('fs');
    var inFile = fs.createReadStream('zlib_file.js');
    var outFile = fs.createWriteStream('zlib_file.gz');
    inFile.pipe(gzip).pipe(outFile);
    setTimeout(function(){
      var gunzip = zlib.createUnzip({flush: zlib.Z_FULL_FLUSH});
      var inFile = fs.createReadStream('zlib_file.gz');
      var outFile = fs.createWriteStream('zlib_file.unzipped');
      inFile.pipe(gunzip).pipe(outFile);
    }, 3000);

    上面代码中前面是readable流通过pipe使用压缩zlib.createGzip()然后输出到writeable中。后面的是解压的过程。

  • 相关阅读:
    兼容ie6的ul水平居中对齐
    button小手设置 css的cursor
    virtualbox xp连不上网
    转发与重定向的区别(forward与redirect的区别)
    注册表单输入框检测
    html中块元素的居中。及兼容性
    centos下不重装php——给PHP添加新扩展库
    linux编译安装时常见错误解决办法
    Swift可选链
    jQueryMobile(一)
  • 原文地址:https://www.cnblogs.com/5ishare/p/5313453.html
Copyright © 2011-2022 走看看