Методы работы с файлами в Node.js

Модуль fs Node.js

Для работы с файлами в Node.js предназначен модуль fs, который позволяет взаимодействовать с файловой системой по образцу стандартных функций POSIX (Portable Operating System Interface — переносимый интерфейс операционных систем, набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой (системный API), библиотеку языка C и набор приложений и их интерфейсов).

Документация...

Читай также Работа с модулями в Node.JS

Для использования API модуля fs его необходимо импортировать:

Все операции файловой системы имеют API формы синхронных функций, формы функций обратного вызова и Promises, и доступны с использованием как синтаксиса CommonJS, так и модулей ES6 (ESM).

Версии API-интерфейсов модуля fs на основе обратного вызова (callback) предпочтительнее использования API-интерфейсов обещаний, когда требуется максимальная производительность (как с точки зрения времени выполнения, так и с точки зрения выделения памяти).

Пример на основе Promise

Операции на основе Promise возвращают promise, которое выполняется после завершения асинхронной операции (пример):

[свернуть]

Пример на основе фyнкции обратного вызова (callback)

Форма на основе callback принимает функцию обратного вызова в качестве последнего аргумента и вызывает операцию асинхронно (первый аргумент всегда зарезервирован для исключения). Аргументы, передаваемые в callback, зависят от метода.

Если операция завершена успешно, то первый аргумент имеет значение null или undefined.

[свернуть]

Пример на основе синхронных вызовов

Синхронные вызовы блокируют цикл событий Node.js и дальнейшее выполнение JavaScript до завершения операции. Исключения генерируются немедленно и могут быть обработаны с помощью try…catch или могут всплывать.

[свернуть]

Чтение из файла в Node.js

Допустим, в папке с файлом приложения app.js расположен текстовый файл hello.txt. Перед использованием методов необходимо импортировать нужную функциональность, например:

Для чтения текстового файла hello.txt в синхронном варианте применяется функция fs.readFileSync("path" [, options])

где

  • "path" - имя или дескриптор файла (например, путь к файлу относительно файла приложения app.js);
  • [, options] (например, "utf8" - кодировка для получения текстового содержимого файла).

Функция fs.readFileSync() вернет считанный текст.

Для асинхронного чтения файла применяется функция fs.readFile(path[, options], callback) (подробнее):

где

  • "path" - имя или дескриптор файла (например, путь к файлу относительно файла приложения app.js);
  • [, options] (например, "utf8" - кодировка для получения текстового содержимого файла);
  • function(error,data){ } - функция обратного вызова, которая выполняется после завершения чтения (первый параметр функции хранит информацию об ошибке при её наличии, а второй - собственно считанные данные).

Например:

Вычисление hash-суммы файла (асинхронное чтение)

 

[свернуть]

Запись файла в Node.js

Для записи файла используются функции:

  • в синхронном варианте - writeFileSync(file, data[, options]);
  • в асинхронном варианте  - writeFile(file, data[, options]).

Вышеуказанные методы полностью перезаписывают файл. Если надо дописать файл (присоединить данные к концу файла), то применяются методы appendFile() и appendFileSync().

Пример

Ещё пример:

Модуль constants.js

[свернуть]

[свернуть]

Удаление файла в Node.js

Для удаления файла используются функции:

  • в синхронном варианте - unlinkSync(path);
  • в асинхронном варианте  - unlinkSync(path).
Пример (с promise)

Еще пример:

[свернуть]

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.