NodeJS學習系列課程筆記(NodeJs zlib庫檔案解壓縮的相關使用方法)
阿新 • • 發佈:2019-01-01
檔案的壓縮和解壓,是一個很常見的功能,最近做專案用到這個功能點,於是拿出來分享一下。
簡單起見,我們看一下程式碼操作:
檔案壓縮
/**
* 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進行壓縮資料的另一個壓縮庫。