8

我正在尝试提取 .tar 文件(从目录中打包),然后检查提取目录中文件的名称。我正在使用tar-fs来提取 tar 文件,然后使用 fs.createReadStream 来操作数据。这是我到目前为止所得到的:

fs.createReadStream(req.files.file.path)
  .pipe(tar.extract(req.files.file.path + '0'))
  .on('error', function() {
    errorMessage = 'Failed to extract file. Please make sure to upload a tar file.';
  })
  .on('entry', function(header, stream, callback) {
    console.error(header);
    stream.on('end', function() {
      console.error("this is working");
    });
  })
  .on('end', function() {
    //the one did not get called
    console.error('end');
  })
;

我希望提取整个文件夹,然后检查文件名。嗯,我还没到那一步。。

据我了解,管道后我得到了一个可读的流。一个可读流有一个结束事件?我的问题是,为什么end不调用代码中的事件?

谢谢!

4

1 回答 1

14

监听finish可写流的事件。当end()已被调用并且条目的处理完成时会触发此事件。更多关于它的信息

.on('finish', function() {
  console.error('end');
})
于 2015-08-05T03:32:08.513 回答