在pipe()后面的'finish'上的nodejs空文件

我写一个可读的stream到一个文件,并想知道什么时候完成,所以我可以访问磁盘上的文件。 我听finish事件,但是当我在听众中做一个stat的文件大小为0.经过一段延迟的大小是正确的。

这是正常的行为?

根据文档 ,当所有的数据已经被刷新到底层系统时,事件被发射出去。

 var ws = fs.createWriteStream(path); file.pipe(ws); // file is a readable stream ws.on('finish', function() { try { stat = fs.statSync(path); // stat.size: 0 } catch (err) { /*...*/ } }); 

当所有的数据被写入stream中时, finish事件被发出,但是当时文件可能不会被closures。 您可以监听文件处理程序closures后发出的close事件。

 ws.once('close', function() { try { stat = fs.statSync(path); } catch (err) { /*...*/ } });