首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在文件夹上使用gunzip

在文件夹上使用gunzip
EN

Stack Overflow用户
提问于 2020-07-11 19:05:19
回答 1查看 105关注 0票数 0

对,所以我有一个装满了其他文件夹的文件夹,这些文件夹被压缩成.gz文件。在这些文件夹中是文本文件。

我希望有一个程序循环遍历这些文本文件,看看它们是否包含特定的字符串,但要做到这一点,我需要首先解压缩它们。我不想开始摆弄文件(除非我可以临时创建它们,然后删除它们),我只想对.gz文件夹的内容执行操作。我尝试过zlib.Gunzip()._outBuffer.toString(),它在压缩文件夹上使用时会给人一种胡言乱语的感觉。

我应该如何继续?

EN

回答 1

Stack Overflow用户

发布于 2020-07-11 19:29:36

最近不得不做一些非常类似的事情,这对我来说是有效的:基本上你只需将文件读入一个buffer,然后你就可以将它传递给gunzip函数。这将返回另一个缓冲区,您可以在该缓冲区上调用toString('utf8')以获取字符串形式的内容,这正是您所需要的:

代码语言:javascript
复制
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的方法

代码语言:javascript
复制
function gunzipFolder(sourceDir, destination) {
    fs.createReadStream(sourceDir)
        .pipe(zlib.createGunzip())
        .pipe(tar.extract(destination));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62848348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档