Где readstream хранит файл в nodejs - PullRequest
0 голосов
/ 14 декабря 2018

Я прочитал, что 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 голосов
/ 14 декабря 2018

По крайней мере в ОС UNIX-типа, если вы откроете файл, а затем удалите его, данные файла будут доступны для чтения, пока вы не закроете файл.

...