Рубрики
Без рубрики

Запись файлов с помощью узла

Как записывать файлы с помощью узла

Самый простой способ записи в файлы в Node.js заключается в использовании API fs.WriteFile() .

Пример:

const fs = require('fs')

const content = 'Some content!'

fs.writeFile('/Users/flavio/test.txt', content, (err) => {
  if (err) {
    console.error(err)
    return
  }
  //file written successfully
})

В качестве альтернативы вы можете использовать синхронную версию fs.writeFileSync() :

const fs = require('fs')

const content = 'Some content!'

try {
  const data = fs.writeFileSync('/Users/flavio/test.txt', content)
  //file written successfully
} catch (err) {
  console.error(err)
}

По умолчанию этот API заменит содержимое файла , если он уже существует.

Вы можете изменить значение по умолчанию, указав флаг:

fs.writeFile('/Users/flavio/test.txt', content, { flag: 'a+' }, (err) => {})

Флаги, которые вы, скорее всего, будете использовать, следующие

  • r+ открыть файл для чтения и записи
  • w+ открыть файл для чтения и записи, расположив поток в начале файла. Файл создается, если он не существует
  • a откройте файл для записи, расположив поток в конце файла. Файл создается, если он не существует
  • a+ откройте файл для чтения и записи, расположив поток в конце файла. Файл создается, если он не существует

(вы можете найти больше флагов по адресу https://nodejs.org/api/fs.html#fs_file_system_flags )

Добавление в файл

Удобным способом добавления содержимого в конец файла является fs.appendFile() (и его fs.appendFileSync() аналог):

const content = 'Some content!'

fs.appendFile('file.log', content, (err) => {
  if (err) {
    console.error(err)
    return
  }
  //done!
})

Использование потоков

Все эти методы записывают полное содержимое в файл, прежде чем возвращать элемент управления обратно в вашу программу (в асинхронной версии это означает выполнение обратного вызова)

В этом случае лучшим вариантом является запись содержимого файла с использованием потоков.

Оригинал: “https://flaviocopes.com/node-writing-files/”