用枪拉文件夹



没错,我有一个文件夹,里面装满了其他文件夹,这些文件夹被压缩成.gz文件。这些文件夹中有文本文件。

我想有一个程序来循环浏览这些文本文件,看看它们是否包含特定的字符串,但要做到这一点,我需要先解压缩它们。我不想开始摆弄文件(除非我可以临时制作它们并在之后删除(,我只想对.gz文件夹的内容执行操作。我试过zlib.Gunzip()._outBuffer.toString(),它在压缩文件夹中使用时会发出大量胡言乱语。

我应该如何继续?

最近不得不做一些类似的事情,以下是对我有效的方法:基本上,您只需将文件读入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);
})()

编辑:

如果你想压缩并提取一个目录,你可以使用tar-fs,它会将内容提取到指定的目录中。一旦处理完其中的文件,您就可以删除该目录。以下是gunzip和提取.tar.gz:的方法

function gunzipFolder(sourceDir, destination) {
fs.createReadStream(sourceDir)
.pipe(zlib.createGunzip())
.pipe(tar.extract(destination));
}

相关内容

  • 没有找到相关文章

最新更新