解析node.js中特定文件的tarball流



使用node.js,我想按顺序处理一个大型tarball,寻找一个特定的文件。一旦遇到,我想保存文件,然后停止处理tarball的其余部分。这将导致更快的响应,因为我不必等待整个文件被处理。

我有一些代码,使用流'tar'包在node.js存储库中,如下所示:

fs.createReadStream('mytarball.tar.gz')
.on('error', console.log)
.pipe(zlib.Unzip())
.pipe(tar.Parse())
.on('entry', function(entry) {
    if(entry.path == 'myfile') {
        console.log('found myfile');
        // save file
        entry.pipe(fs.createWriteStream(entry.path));
        //
        // HELP - how do I stop processing the rest of the tarball (gracefully)
        //
    }
});

最好的办法可能是在文件流上简单地调用close():

var fstream = fs.createReadStream('mytarball.tar.gz')
                .on('error', console.log);
fstream
  .pipe(zlib.Unzip())
  .pipe(tar.Parse())
  .on('entry', function(entry) {
      if(entry.path == 'myfile') {
          console.log('found myfile');
          // save file
          entry.on('end', function() {
            fstream.close();
          }).pipe(fs.createWriteStream(entry.path));
      }
  });

相关内容

  • 没有找到相关文章

最新更新