Работа с файлами в Node.js является одной из основных задач, с которыми сталкивается разработчик. Node.js предоставляет мощный и гибкий API для работы с файлами, который позволяет выполнять различные операции, такие как чтение, запись, копирование и удаление файлов. В этом ответе мы рассмотрим основные моменты, связанные с работой с файлами в Node.js.

Основные модули для работы с файлами

  • fs (File System) — основной модуль для работы с файловой системой.
  • path — модуль, который помогает работать с путями файлов и директорий.

Импортирование модулей

Для начала работы с файлами необходимо импортировать необходимые модули. Это можно сделать с помощью следующего кода:

const fs = require('fs');
const path = require('path');

Чтение файлов

Для чтения содержимого файла в Node.js можно использовать метод readFile. Этот метод позволяет асинхронно считывать файл и передавать его содержимое в колбэк-функцию. Вот пример:

fs.readFile(path.join(__dirname, 'example.txt'), 'utf8', (err, data) => {
  if (err) {
    console.error('Ошибка чтения файла:', err);
    return;
  }
  console.log('Содержимое файла:', data);
});

В этом примере мы используем path.join для создания корректного пути к файлу example.txt. Обратите внимание, что мы указываем кодировку ‘utf8’, чтобы прочитать текст в правильном формате.

Синхронное чтение файлов

Если вам нужно прочитать файл синхронно, вы можете использовать метод readFileSync. Вот как это делается:

try {
  const data = fs.readFileSync(path.join(__dirname, 'example.txt'), 'utf8');
  console.log('Содержимое файла:', data);
} catch (err) {
  console.error('Ошибка чтения файла:', err);
}

Однако стоит помнить, что синхронные операции блокируют выполнение кода, и их использование рекомендуется только в тех случаях, когда это действительно необходимо.

Запись файлов

Для записи данных в файл в Node.js используется метод writeFile. Он также работает асинхронно:

fs.writeFile(path.join(__dirname, 'output.txt'), 'Hello, World!', (err) => {
  if (err) {
    console.error('Ошибка записи в файл:', err);
    return;
  }
  console.log('Файл успешно записан.');
});

При использовании writeFile если файл не существует, он будет создан. Если файл уже существует, его содержимое будет перезаписано.

Добавление данных в файл

Если вы хотите добавить данные в существующий файл, используйте метод appendFile:

fs.appendFile(path.join(__dirname, 'output.txt'), 'nHello again!', (err) => {
  if (err) {
    console.error('Ошибка добавления в файл:', err);
    return;
  }
  console.log('Данные успешно добавлены в файл.');
});

Удаление файлов

Чтобы удалить файл, используйте метод unlink:

fs.unlink(path.join(__dirname, 'output.txt'), (err) => {
  if (err) {
    console.error('Ошибка удаления файла:', err);
    return;
  }
  console.log('Файл успешно удален.');
});

Работа с директориями

Node.js также позволяет работать с директориями. Например, чтобы создать новую директорию, используйте метод mkdir:

fs.mkdir(path.join(__dirname, 'new-directory'), { recursive: true }, (err) => {
  if (err) {
    console.error('Ошибка создания директории:', err);
    return;
  }
  console.log('Директория успешно создана.');
});

Для удаления директории используйте метод rmdir:

fs.rmdir(path.join(__dirname, 'new-directory'), (err) => {
  if (err) {
    console.error('Ошибка удаления директории:', err);
    return;
  }
  console.log('Директория успешно удалена.');
});

Заключение

В этой статье мы рассмотрели основные операции, которые можно выполнять с файлами и директориями в Node.js. Используя модуль fs, вы можете легко управлять файлами, что делает Node.js мощным инструментом для серверной разработки. Мы не охватили все возможные методы модуля, но ознакомившись с основными, вы сможете продолжить изучение и освоение более сложных операций.