我正在尝试解压缩一个.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
与tar.extract()
关联,它是一个可写流。该可写流在内部基于tar文件中文件数量维护了多个entrystream
。因此,当所有的entry文件都被写入磁盘且为它们发出end
事件时,写入器最终发出finish
事件。 - hassansinend
被发出后,才会发出finish
? - odieatlaend
还是finish
回调函数?当这种流既没有写入也没有读取时,我需要知道预期的行为。 - martin-g