Проще всего писать в файлы в 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 {
// готово!
}
});Вот пример 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();