我读到createRreadStream
不会将整个文件放入内存,而是可以处理块。但是,我有同时写入和读取文件的情况。写入首先完成,然后从磁盘删除文件。以某种方式,readstream能够完整读取整个文件,而没有任何错误。
有人对此有任何解释吗?我以为流不会将文件加载到内存中是我错了吗?
这是用于写入文件的代码
const fs = require('fs');
const file = fs.createWriteStream('./bigFile4.txt');
function write(stream,data) {
if(!stream.write(data))
return new Promise(resolve=>stream.once('drain',resolve));
return true;
}
(async() => {
for(let i=0; i<1e6; i++) {
const res = write(file,'a')
if(res instanceof Promise)
await res;
}
write(file,'success');
})();
为了阅读,我使用了这个
const file = fs.createReadStream('bigFile4.txt')
file.on('data',(chunk)=>{
console.log(chunk.toString())
})
file.on('end',()=>{
console.log('done')
})
答案 0 :(得分:0)
至少在UNIX类型的OS上,如果打开文件然后将其删除,则在关闭文件之前,仍然可以读取文件数据。