Недавно приходилось делать что-то очень похожее, вот что у меня сработало: в основном вы просто читаете файл в buffer
, который затем можете передать функции gunzip
. Это вернет другой буфер, в котором вы можете вызвать toString('utf8')
, чтобы получить содержимое в виде строки, что именно то, что вам нужно:
const util = require('util');
let {gunzip} = require('zlib');
const fs = require('fs');
gunzip = util.promisify(gunzip);
async function getStringFromGzipFile(inputFilePath) {
const sourceBuffer = await fs.promises.readFile(inputFilePath);
return await gunzip(sourceBuffer);
}
(async () => {
const stringContent = await getStringFromGzipFile('/path/to/file');
console.log(stringContent);
})()
EDIT:
Если хотите Чтобы распаковать и извлечь каталог, вы можете использовать tar-fs
, который будет извлекать содержимое в указанный каталог. После того, как вы закончите обработку файлов, вы можете просто удалить каталог. Вот как можно gunzip
и извлечь .tar.gz
:
function gunzipFolder(sourceDir, destination) {
fs.createReadStream(sourceDir)
.pipe(zlib.createGunzip())
.pipe(tar.extract(destination));
}