文件的壓縮 fs、archiver模塊
// 創(chuàng)建一個(gè)可寫文件流病袄,以便把壓縮的數(shù)據(jù)導(dǎo)入
var output = fs.createWriteStream(zip_path);
//archiv對(duì)象拯钻,設(shè)置等級(jí)
var archive = archiver('zip', {
zlib: { level: 9 } // Sets the compression level.
});
//管道連接
archive.pipe(output);
//壓縮文件到壓縮包
archive.file(DAT_path, { name: dat_name });
//壓縮數(shù)據(jù)導(dǎo)壓縮包
archive.append(rep.getRepFile(params),{name: rep_name});
//開始?jí)嚎s
archive.finalize();
//監(jiān)聽壓縮吉嚣、傳輸數(shù)據(jù)過程中的錯(cuò)誤回調(diào)
archive.on('error', function(err) {//壓縮失敗
});
//監(jiān)聽壓縮观话、傳輸數(shù)據(jù)結(jié)束
output.on('close', function() {//壓縮完成
})
文件的解壓縮 fs胃夏、unzip模塊
//判斷壓縮文件是否存在
if(!fs.existsSync(zip_path)) return;
//創(chuàng)建解壓縮對(duì)象
let unzip_extract = unzip.Extract({path:taget_path});
//監(jiān)聽解壓縮轴或、傳輸數(shù)據(jù)過程中的錯(cuò)誤回調(diào)
unzip_extract.on('error',(err)=>{
});
//監(jiān)聽解壓縮、傳輸數(shù)據(jù)結(jié)束
unzip_extract.on('finish',()=>{
});
//創(chuàng)建可讀文件流仰禀,傳輸數(shù)據(jù)
fs.createReadStream(zip_path).pipe(unzip_extract);