Краткий справочник

Шпаргалка по модулю fs в Node.js

Краткое руководство по модулю fs в Node.js: асинхронное и синхронное чтение, запись, наблюдение за файлами, метаданные и работа с каталогами.

· Опубликовано

Модуль fs (File System) в Node.js предоставляет API для взаимодействия с файловой системой с помощью промисов, функций обратного вызова или синхронных методов.

API на основе промисов (fs/promises)

const fs = require('fs/promises');
// import fs from 'node:fs/promises';

// Чтение файла в виде строки UTF-8
const content = await fs.readFile('data.txt', 'utf8');

// Запись или замена содержимого файла
await fs.writeFile('output.txt', 'Hello World', 'utf8');

// Добавление данных в конец файла
await fs.appendFile('log.txt', 'New entry\n', 'utf8');

// Проверка существования и прав доступа
try {
  await fs.access('config.json');
} catch {
  console.log('Файл не существует или нет доступа');
}

Синхронный API

const fs = require('fs');

const data = fs.readFileSync('input.txt', 'utf8');
fs.writeFileSync('output.txt', data);
fs.appendFileSync('output.txt', '\nappended');

const exists = fs.existsSync('file.txt');

Метаданные и характеристики файлов (fs.stat)

const stats = await fs.stat('file.txt');

stats.isFile();            // -> обычный файл (true / false)
stats.isDirectory();       // -> каталог (true / false)
stats.isSymbolicLink();    // -> символическая ссылка (true / false)
stats.size;                // Размер файла в байтах
stats.mtime;               // Время последнего изменения

Операции с каталогами

// Получение списка файлов в каталоге
const files = await fs.readdir('src/');

// Рекурсивное создание каталогов
await fs.mkdir('build/assets/css', { recursive: true });

// Рекурсивное удаление каталогов
await fs.rm('dist/', { recursive: true, force: true });

Отслеживание изменений (fs.watch)

const fs = require('fs');

const watcher = fs.watch('src/', { recursive: true }, (eventType, filename) => {
  console.log(`Event: ${eventType} on ${filename}`);
});

// Остановка наблюдения
watcher.close();

Файловые дескрипторы (File Descriptors)

const fs = require('fs/promises');

// Открытие только для чтения
const filehandle = await fs.open('archive.bin', 'r');

// Выделение буфера размером 1024 байта
const buffer = Buffer.alloc(1024);

// Чтение байтов в буфер
const { bytesRead } = await filehandle.read(buffer, 0, 1024, 0);

await filehandle.close();

Ссылки и материалы

Связанные темы