Skip to content

Запись файлов с помощью Node.js

Запись файла

Простейший способ записи в файлы в Node.js — использование API fs.writeFile().

javascript
const fs = require('node:fs')
const content = 'Some content!'

fs.writeFile('/Users/joe/test.txt', content, err => {
  if (err) {
    console.error(err)
  } else {
    // файл успешно записан
  }
})

Синхронная запись файла

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

javascript
const fs = require('node:fs')
const content = 'Some content!'

try {
  fs.writeFileSync('/Users/joe/test.txt', content)
} catch (err) {
  console.error(err)
}

Можно также использовать метод fsPromises.writeFile(), основанный на промисах, который предлагается модулем fs/promises:

javascript
const fs = require('node:fs/promises')
async function example() {
  try {
    const content = 'Some content!'
    await fs.writeFile('/Users/joe/test.txt', content)
  } catch (err) {
    console.log(err)
  }
}

example()

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

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

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

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

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

Более подробную информацию о флагах можно найти в документации по fs.

Добавление содержимого в файл

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

Примеры

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

javascript
const fs = require('node:fs')
const content = 'Some content!'

fs.appendFile('file_log', content, err => {
  if (err) {
    console.error(err)
  } else {
    // done!
  }
})

Пример с Promises

Вот пример использования fsPromises.appendFile():

javascript
const fs = require('node:fs/promises')
async function example() {
  try {
    const content = 'Some content!'
    await fs.appendFile('/Users/joe/test.txt', content)
  } catch (err) {
    console.log(err)
  }
}

example()