我正在尝试提取.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
事件没有被调用?
谢谢!
答案 0 :(得分:14)
为可写流侦听finish
事件。调用end()
并完成条目处理时会触发此操作。更多信息here。
.on('finish', function() {
console.error('end');
})