Изменить файл, если он существует, или создать новый, если он не использует флаги fs.createWriteStream()?
Я получаю фрагментированные файлы из клиентского приложения в моем приложении узла. Разные куски приходят в отдельных запросах. Затем я собираю куски в один файл на сервере, записывая в один файл, используя потоки записи с заполнением.
У меня проблема в том, что когда я пишу первый фрагмент, мне нужно создать файл, а для всех последующих фрагментов мне нужно только изменить этот файл. Для достижения этого я использую fs.createWriteStream(filePath)
- это будет перезаписывать файл каждый раз, когда я его вызываю, поэтому мне нужно передать специальный флаг: r+
, Проблема с этим флагом заключается в том, что он работает только с уже существующим файлом и выдает ошибку, если не может его найти.
Поэтому я хочу знать, есть ли флаг, который заставит fs создать файл, если он не существует, или обновить существующий файл без явного вызова fs.exists
Вот что я придумал на данный момент:
//check if file exists
fs.exists(filePath, function(exists) {
//if it does exist, then modify it
if (exists) {
flags = 'r+';
//else create a new one
} else {
flags = 'w';
}
var ws = fs.createWriteStream(filePath, {
start: chunkInfo.chunkNumber * chunkInfo.chunkSize, //set chunk padding
flags: flags
});
file.pipe(ws); //pipe the file read stream to write stream
});