我为文件写了一个可读的流,想知道它什么时候完成,所以我可以访问磁盘上的文件。
我听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) { /*...*/ }
});
答案 0 :(得分:1)
当所有数据都写入流时会发出finish
事件,但此时文件可能无法关闭。您可以监听文件处理程序关闭后发出的close
事件。
ws.once('close', function() {
try {
stat = fs.statSync(path);
}
catch (err) { /*...*/ }
});
答案 1 :(得分:0)
正确的捕获事件示例
var ws = fs.createWriteStream(path);
var stream = file.pipe(ws); // file is a readable stream
stream.on('finish', function() {
try {
stat = fs.statSync(path); // stat.size: 0
}
catch (err) { /*...*/ }
});