2012-01-07 5 views

ответ

15

fs.open и fs.write предназначены для низкоуровневого доступа, подобно тому, что вы получаете, когда вы код на C. fs.open открывает файл и fs.write пишет к нему.

A fs.WriteStream - это поток, который открывает файл в фоновом режиме, и очереди записываются до тех пор, пока файл не будет готов. Кроме того, поскольку он реализует API потока, его можно использовать более общим образом, подобно сетевому потоку или тому подобное. Вы, например, захотите, когда пользователь загрузит файл на ваш сервер - возьмите входящий поток HTTP POST, pipe() его на WriteStream. Очень просто.

fs.writeFile - это высокоуровневый метод для записи множества данных, хранящихся в ОЗУ в файл. Он не поддерживает потоковое вещание или так, поэтому это плохая идея для больших файлов или важных для производительности файлов. Вы захотите этого, если вы выберете небольшие файлы JSON или так в своем коде.

+0

Спасибо вам за разъяснение! – Yijinsei

+0

Итак, 'WriteStream' будет быстрее, чем даже' write'? – 3zzy

+0

@ 3zzy Потоковая передача данных по своей природе медленнее, поскольку они обрабатываются в кусках, однако они дружелюбны по ОЗУ (потому что вам не нужен весь файл в памяти). – Tobiq