readstream在哪里将文件存储在Node.js中

时间:2018-12-14 09:26:59

标签: javascript node.js stream fs

我读到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')
})

1 个答案:

答案 0 :(得分:0)

至少在UNIX类型的OS上,如果打开文件然后将其删除,则在关闭文件之前,仍然可以读取文件数据。