.Zip方式
压缩
使用archiver进行压缩
const fs = require('fs');
const archiver = require('archiver');
const output = fs.createWriteStream('archiverZip.zip');
const archive = archiver('zip');
archive.on('error', function (err) {
throw err;
});
archive.pipe(output);
// 文件夹压缩
archive.directory('zipData/', false);
// 文件压缩
// archive.file('test.js');
archive.finalize();
将会压缩zipData下的所有文件。
解压
使用unzip2进行解压
const fs = require('fs');
const unzip = require('unzip2');
const zipDataPath = process.cwd() + '/archiverZip.zip';
const unzipDataPath = process.cwd() + '/unZipData';
if (fs.existsSync(unzipDataPath)) {
deleteall(unzipDataPath);
}
const contactsReadStream = fs.createReadStream(zipDataPath);
contactsReadStream.pipe(unzip.Extract({
path: unzipDataPath
}));
GZip方式
文件压缩
使用zlib进行压缩
const fs = require('fs');
const zlib = require('zlib');
const gzipDataPath = process.cwd() + '/test.js';
const gzipPath = process.cwd() + '/gzipData.zip';
const gzipReadStream = fs.createReadStream(gzipDataPath);
const gzipWriteStream = fs.createWriteStream(gzipPath)
gzipReadStream.pipe(zlib.createGzip()).pipe(gzipWriteStream);
文件解压
使用zlib进行解压
const fs = require('fs');
const zlib = require('zlib');
const unGzipPath = process.cwd() + '/gzipData.zip';
const unGzipDataPath = process.cwd() + '/unGzip.js';
const unGzipReadStream = fs.createReadStream(unGzipPath);
const unGzipWriteStream = fs.createWriteStream(unGzipDataPath)
unGzipReadStream.pipe(zlib.createGunzip()).pipe(unGzipWriteStream);
文件夹压缩
使用tar进行压缩
const fs = require('fs');
const tar = require('tar');
const pack = new tar.Pack({ gzip: true });
const gzipPath = 'zipData';
//遍历文件夹,并以指定基准输出
readDirSync(gzipPath, "base");
function readDirSync(path, base) {
if (base == undefined) {
base = path
}
const pa = fs.readdirSync(path);
pa.forEach((ele, index) => {
var info = fs.statSync(path + "/" + ele);
if (info.isDirectory()) {
readDirSync(path + "/" + ele, base + "/" + ele);
} else {
pack.add(path + "/" + ele);
}
});
}
pack.end();
const writeStream = fs.createWriteStream('gzipData.tar.gz');
pack.pipe(writeStream);
或者是
const fs = require('fs');
const tar = require('tar');
const writeStream = fs.createWriteStream('gzipDataTar.tar.gz');
tar.c( // or tar.create
{
gzip: true
},
[ gzipPath ]
).pipe(writeStream)
文件夹解压
使用tar进行解压
const tar = require('tar');
const unGzipPath = process.cwd() + '/gzipData.tar.gz';
tar.x({ // or tar.extract
file: unGzipPath,
}).then()
测试代码
// zip压缩
const fs = require('fs');
const archiver = require('archiver');
const output = fs.createWriteStream('archiverZip.zip');
const archive = archiver('zip');
archive.on('error', function (err) {
throw err;
});
archive.pipe(output);
archive.directory('zipData/', false); // 文件夹压缩
archive.file('test.js'); // 文件压缩
archive.finalize();
// zip解压
const fs = require('fs');
const unzip = require('unzip2');
const zipDataPath = process.cwd() + '/archiverZip.zip';
const unzipDataPath = process.cwd() + '/unZipData';
if (fs.existsSync(unzipDataPath)) {
deleteall(unzipDataPath);
}
const contactsReadStream = fs.createReadStream(zipDataPath);
contactsReadStream.pipe(unzip.Extract({
path: unzipDataPath
}));
// gz文件的压缩
const fs = require('fs');
const zlib = require('zlib');
const gzipDataPath = process.cwd() + '/test.js';
const gzipPath = process.cwd() + '/gzipData.zip';
const gzipReadStream = fs.createReadStream(gzipDataPath);
const gzipWriteStream = fs.createWriteStream(gzipPath)
gzipReadStream.pipe(zlib.createGzip()).pipe(gzipWriteStream);
// gz文件解压
const fs = require('fs');
const zlib = require('zlib');
const unGzipPath = process.cwd() + '/gzipData.zip';
const unGzipDataPath = process.cwd() + '/unGzip.js';
const unGzipReadStream = fs.createReadStream(unGzipPath);
const unGzipWriteStream = fs.createWriteStream(unGzipDataPath)
unGzipReadStream.pipe(zlib.createGunzip()).pipe(unGzipWriteStream);
// gz文件夹压缩
const fs = require('fs');
const tar = require('tar');
const pack = new tar.Pack({ gzip: true });
const gzipPath = 'zipData';
//遍历文件夹,并以指定基准输出
readDirSync(gzipPath, "base");
function readDirSync(path, base) {
if (base == undefined) {
base = path
}
const pa = fs.readdirSync(path);
pa.forEach((ele, index) => {
var info = fs.statSync(path + "/" + ele);
if (info.isDirectory()) {
readDirSync(path + "/" + ele, base + "/" + ele);
} else {
pack.add(path + "/" + ele);
}
});
}
pack.end();
const writeStream = fs.createWriteStream('gzipDataTar.tar.gz');
pack.pipe(writeStream);
// gz文件夹压缩
const fs = require('fs');
const tar = require('tar');
const writeStream = fs.createWriteStream('gzipDataTar.tar.gz');
tar.c( // or tar.create
{
gzip: true
},
[gzipPath]
).pipe(writeStream)
// gz文件解压
const tar = require('tar');
const unGzipPath = process.cwd() + '/gzipData.tar.gz';
tar.x({ // or tar.extract
file: unGzipPath,
}).then()