Разархивирование файлов GZ в Node.js: быстрые и простые методы

Вы когда-нибудь встречали файл GZ в своем проекте Node.js и задавались вопросом, как извлечь его содержимое? Файлы GZ представляют собой сжатые архивы, обычно используемые для уменьшения размера файлов и повышения эффективности передачи данных. В этой статье блога мы рассмотрим несколько методов распаковки файлов GZ в Node.js, предоставляя вам практические примеры кода и разговорные объяснения. Давайте погрузимся!

Метод 1: использование модуля zlib
Node.js предоставляет модуль zlib, который включает в себя функциональные возможности для работы со сжатыми файлами. Чтобы разархивировать файл GZ, вы можете использовать модуль zlibследующим образом:

const zlib = require('zlib');
const fs = require('fs');
const gzFilePath = 'path/to/file.gz';
const destinationPath = 'path/to/destination';
const readStream = fs.createReadStream(gzFilePath);
const writeStream = fs.createWriteStream(destinationPath);
const unzip = zlib.createGunzip();
readStream.pipe(unzip).pipe(writeStream);
writeStream.on('finish', () => {
  console.log('GZ file unzipped successfully!');
});

Метод 2: использование внешних библиотек.
Если вы предпочитаете более высокоуровневый подход, вы можете воспользоваться популярными библиотеками Node.js, такими как gzip-uncompressили node-gzip.. Эти библиотеки предоставляют упрощенные API для распаковки файлов GZ. Вот пример использования gzip-uncompress:

const gzipUncompress = require('gzip-uncompress');
const fs = require('fs');
const gzFilePath = 'path/to/file.gz';
const destinationPath = 'path/to/destination';
gzipUncompress.uncompress(gzFilePath, destinationPath, (err) => {
  if (err) {
    console.error('An error occurred while unzipping the GZ file:', err);
    return;
  }

  console.log('GZ file unzipped successfully!');
});

Метод 3: выполнение команд оболочки
Другой вариант — выполнять команды оболочки из приложения Node.js. Такой подход позволяет использовать инструменты системного уровня, такие как gzipили gunzip. Вот пример использования функции execиз модуля child_process:

const { exec } = require('child_process');
const gzFilePath = 'path/to/file.gz';
const destinationPath = 'path/to/destination';
exec(`gunzip -c ${gzFilePath} > ${destinationPath}`, (err) => {
  if (err) {
    console.error('An error occurred while unzipping the GZ file:', err);
    return;
  }

  console.log('GZ file unzipped successfully!');
});

В этой статье мы рассмотрели три различных метода распаковки файлов GZ в Node.js. Мы обсудили использование модуля zlib, использование внешних библиотек, таких как gzip-uncompressили node-gzip, и выполнение команд оболочки. Каждый метод имеет свои преимущества и может подойти для разных сценариев. Теперь у вас есть знания и примеры кода для легкой обработки файлов GZ в ваших проектах Node.js. Приятного кодирования!