1. 程式人生 > >NodeJS學習系列課程筆記(NodeJs zlib庫檔案解壓縮的相關使用方法)

NodeJS學習系列課程筆記(NodeJs zlib庫檔案解壓縮的相關使用方法)

這裡寫圖片描述

檔案的壓縮和解壓,是一個很常見的功能,最近做專案用到這個功能點,於是拿出來分享一下。

簡單起見,我們看一下程式碼操作:

檔案壓縮

/**
 * Created by Richard on 7/14/16.
 */
const fs = require('fs');

const zlib = require('zlib');

fs.createReadStream('my.txt')
.pipe(zlib.createGzip())
.pipe(fs.createWriteStream('my.zip'));

檔案解壓:

/**
 * Created by Richard on 7/14/16.
 */
var fs = require("fs"); var zlib = require('zlib'); // 解壓 input.txt.gz 檔案為 input.txt fs.createReadStream('my.zip') .pipe(zlib.createGunzip()) .pipe(fs.createWriteStream('my3.txt')); console.log("檔案解壓完成。");

如果我們相對資料而不是檔案進行解壓縮操作是, 我們可以採用:

/**
 * Created by Richard on 7/14/16.
 */
const zlib = require
('zlib'); const input = '.................................'; zlib.deflate(input, (err, buffer) => { if (!err) { console.log(buffer.toString('base64')); } else { // handle error } }); const buffer = Buffer.from('eJzT0yMAAGTvBe8=', 'base64'); zlib.unzip(buffer, (err, buffer) => { if
(!err) { console.log(buffer.toString()); } else { // handle error } })
;

這裡說明一下deflate 和gzip , 其實HTTP定義了一種機制,一個Web客戶機和Web伺服器同意一壓縮方案可以用來發送內容。這是使用接受編碼和內容編碼標頭完成。有兩種常用的HTTP壓縮:DEFLATE和GZIP。

DEFLATE是一個無專利的壓縮演算法,它可以實現無損資料壓縮,有眾多開源的實現演算法。

GZIP是使用DEFLATE進行壓縮資料的另一個壓縮庫。