Запись файлов в 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()