Как записать данные в файл в Node.js
Короткий ответ
writeFile() создаёт файл или полностью заменяет его содержимое:
import { readFile, writeFile } from 'node:fs/promises';
await writeFile('greeting.txt', 'Hello, Anna!');
console.log(await readFile('greeting.txt', 'utf8'));Результат:
Hello, Anna!Массив строк
Перед записью соедините строки переводом строки:
import { readFile, writeFile } from 'node:fs/promises';
const tasks = ['Buy milk', 'Call Anna', 'Write a report'];
await writeFile('tasks.txt', tasks.join('\n') + '\n');
console.log(await readFile('tasks.txt', 'utf8'));Результат:
Buy milk
Call Anna
Write a reportВ папку, которой ещё нет
writeFile() не создаёт папки. Сначала создайте их через mkdir() с параметром recursive:
import { mkdir, writeFile, readFile } from 'node:fs/promises';
await mkdir('output/reports', { recursive: true });
await writeFile('output/reports/day.txt', 'done');
console.log(await readFile('output/reports/day.txt', 'utf8'));Результат:
doneЧастая ошибка
Каждый writeFile() перезаписывает файл, поэтому при вызове в цикле останется только последняя строка. Чтобы дописывать в конец, используйте appendFile():
import { readFile, writeFile } from 'node:fs/promises';
for (const line of ['first', 'second', 'third']) {
await writeFile('log.txt', line + '\n');
}
console.log(await readFile('log.txt', 'utf8'));Результат:
thirdФункции из этого ответа
- Array.prototype.join — Объединяет элементы массива в строку.