node.js - Node js文件系统: end event not called for readable stream

标签 node.js tar node.js-stream

我正在尝试提取一个 .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事件没有被调用?

谢谢!

最佳答案

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

.on('finish', function() {
  console.error('end');
})

关于node.js - Node js文件系统: end event not called for readable stream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31822534/

相关文章:

javascript - Supertest 中的负面断言

python - 同一台服务器上的 2 个应用程序,不同的端口。第一个应用程序看不到第二个

linux - 如何将 home-dir 结构从一台 Linux PC 传输到另一台 Linux PC

windows - Visual Studio压缩文件夹的例程

linux - 如何使用 PERL 将多个 *.tgz 文件提取到多个目录?

node.js - Https createServer,加载cookie和加载客户端index.html

node.js - 在 express.js 中,req.protocol 没有为我的安全链接选择 "https"。它总是选择 "http"

javascript - Node.js 中的包和模块有什么区别

node.js - Node TLS 客户端中出现神秘 TCP 错误

Node.js 从 shell 管道读取后如何使用 stdin 流读取用户输入