Изменить файл, если он существует, или создать новый, если он не использует флаги 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
});

0 ответов

Другие вопросы по тегам