Node.js 压缩文件夹到指定位置的多种方式和推荐库

本文将介绍三种使用 Node.js 压缩文件夹到指定位置的方法,并推荐使用 archiver 库,因为它提供了更多的选项和更好的性能。

1. 使用 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);
});

2. 使用 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}`);
});

3. 使用 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

推荐使用 archiver 库来压缩文件夹,因为它提供了更多的选项和更好的性能。

Node.js 压缩文件夹到指定位置的多种方式和推荐库

原文地址: https://www.cveoy.top/t/topic/ocI6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录