Запись файлов с помощью Node.js
Запись файла
Простейший способ записи в файлы в Node.js — использование API fs.writeFile()
.
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
:
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
:
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 заменит содержимое файла, если он уже существует.
Можно изменить значение по умолчанию, указав флаг:
fs.writeFile('/Users/joe/test.txt', content, { flag: 'a+' }, err => [])
Флаги, которые вы, вероятно, будете использовать:
Флаг | Описание | Файл создается, если он не существует |
---|---|---|
r+ | Этот флаг открывает файл для чтения и записи | ❌ |
w+ | Этот флаг открывает файл для чтения и записи, а также устанавливает позицию потока в начало файла | ✅ |
a | Этот флаг открывает файл для записи, а также устанавливает позицию потока в конец файла | ✅ |
a+ | Этот поток открывает файл для чтения и записи, а также устанавливает позицию потока в конец файла | ✅ |
Более подробную информацию о флагах можно найти в документации по fs.
Добавление содержимого в файл
Добавление в файлы удобно, когда нет необходимости перезаписывать файл новым содержимым, а нужно только добавить к нему данные.
Примеры
Удобный способ добавления контента в конец файла — это fs.appendFile()
(и его аналог fs.appendFileSync()
):
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()
:
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()