有一种归档格式 gzip。有json文件。我们需要依次获取每个文件,处理它以及其他 gzip 中写入的内容。我意识到我需要使用标准库 createReadStream 和 zlib。
好吧,按照https://nodejs.org/api/zlib.html#zlib_examples 中的示例,可以为单个 gzipped 文件完成以下过程:
var unzip = zlib.createUnzip();
var fs = require('fs');
var inp = fs.createReadStream('input.json.gz');
var out = fs.createWriteStream('output.json');
inp.pipe(unzip).pipe(out);
Run Code Online (Sandbox Code Playgroud)
但是,如果一个 gzip 中有多个文件,我不确定如何去做。我找不到可以做到这一点的文档,我发现可以从 node 中的 gzip 文件解压缩多个文件的唯一方法是,如果它们首先被 tar 压缩。可以在此处找到在节点中解压缩 tar.gz 的过程。按照那个例子,你可以做这样的事情:
var unzip = zlib.createUnzip();
var fs = require('fs');
var tar = require('tar-fs');
var inp = fs.createReadStream('input.tar.gz');
var out = './output'; // output directory
inp.pipe(unzip).pipe(tar.extract(out));
Run Code Online (Sandbox Code Playgroud)