我将一个可读流写入一个文件,想知道它何时完成,以便我可以访问磁盘上的文件。
我收听了 finish
事件,但是当我在监听器中执行 stat
时,文件大小为 0。经过一些延迟后,大小是正确的。
这是正常行为吗?
根据docs当所有数据都已刷新到底层系统时,将发出该事件。
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) { /*...*/ }
});
最佳答案
finish
事件在所有数据写入流时触发,但此时文件可能未关闭。您可以监听文件处理程序关闭后发出的 close
事件。
ws.once('close', function() {
try {
stat = fs.statSync(path);
}
catch (err) { /*...*/ }
});
关于node.js - pipe()后 'finish'上的nodejs空文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32634260/