Запись файлов в 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 {
// file written successfully
}
})Синхронная запись файла
В качестве альтернативы можно использовать синхронную версию 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()