nodejs 压缩文件夹到指定位置的多种方式和推荐库dome
- 使用Node.js内置的zlib模块来压缩文件夹。示例代码:
const fs = require('fs');
const zlib = require('zlib');
const inputFolder = './input';
const outputFile = './output/compressed.zip';
const zipStream = zlib.createGzip();
const outputStream = fs.createWriteStream(outputFile);
fs.readdir(inputFolder, (err, files) => {
if (err) throw err;
files.forEach((file) => {
const inputPath = `${inputFolder}/${file}`;
const readStream = fs.createReadStream(inputPath);
readStream.pipe(zipStream, { end: false });
});
zipStream.on('end', () => {
console.log(`Finished compressing ${inputFolder} to ${outputFile}`);
});
zipStream.pipe(outputStream);
});
- 使用npm包node-zip来压缩文件夹。示例代码:
const fs = require('fs');
const Zip = require('node-zip');
const inputFolder = './input';
const outputFile = './output/compressed.zip';
const zip = new Zip();
fs.readdir(inputFolder, (err, files) => {
if (err) throw err;
files.forEach((file) => {
const inputPath = `${inputFolder}/${file}`;
const fileContent = fs.readFileSync(inputPath);
zip.file(file, fileContent);
});
const data = zip.generate({ base64: false, compression: 'DEFLATE' });
fs.writeFileSync(outputFile, data, 'binary');
console.log(`Finished compressing ${inputFolder} to ${outputFile}`);
});
- 使用npm包archiver来压缩文件夹。示例代码:
const fs = require('fs');
const archiver = require('archiver');
const inputFolder = './input';
const outputFile = './output/compressed.zip';
const output = fs.createWriteStream(outputFile);
const archive = archiver('zip', { zlib: { level: 9 } });
output.on('close', () => {
console.log(`Finished compressing ${inputFolder} to ${outputFile}`);
});
archive.on('error', (err) => {
throw err;
});
archive.pipe(output);
fs.readdir(inputFolder, (err, files) => {
if (err) throw err;
files.forEach((file) => {
const inputPath = `${inputFolder}/${file}`;
archive.file(inputPath, { name: file });
});
archive.finalize();
});
推荐使用archiver库来压缩文件夹,它提供了更多的选项和更好的性能
原文地址: http://www.cveoy.top/t/topic/fmlS 著作权归作者所有。请勿转载和采集!