Nodejs: Написание большого количества файлов: createWriteStream или writeFile?

Мне нужно написать много файлов, и мне интересно, какой метод подходит лучше всего. Данные текстовые.

Я немного обеспокоен тем, как я могу правильно закрыть операцию. createWriteStream имеет метод end() или fs.close(), который закрывает поток; writeFile не имеет такого метода, если я правильно понял, что может быть неэффективным после длинной партии записи. Во всех примерах fs.writeFile никогда не упоминается fs.close().


person roland    schedule 10.10.2013    source источник


Ответы (2)


writeFile не нуждается в методе close, потому что он открывает/записывает/закрывает файл за один вызов.

Основным критерием выбора между ними является не наличие/необходимость явного close, а скорее: легко ли помещаются данные в ОЗУ? Если это так, то writeFile, безусловно, проще в использовании (и, возможно, немного быстрее); в противном случае вам лучше использовать потоки и записывать данные кусками.

person lapo    schedule 10.10.2013

fs.close() фактически используется для закрытия дескриптора файла, полученного из fs.open() или подобных функций. Возможно, вы смотрите на это writeable.close(). fs.write() полностью запишет и закончит файл за один вызов.

Для потоков записи вы должны закрыть их после завершения записи, если вы не используете readable.pipe(). Основное различие между fs.createReadStream() и fs.writeFile() заключается в том, что один принимает поток, а другой принимает ресурс в памяти. Поэтому, если у вас есть большой файл, лучше использовать поток, чтобы в память одновременно загружались только небольшие фрагменты.

person hexacyanide    schedule 10.10.2013