4 базовых функции для работы с файлами в

4 базовых функции для работы с файлами в

Перед чтением инструкции убедитесь, что у вас уже установлен Node.js. Д ля работы с файлами используются промисы с синтаксисом async/await . Если вы незнакомы с концепцией асинхронного программирования в JavaScript, ознакомьтесь с нашим руководством .

В каждом из следующих примеров мы сначала импортируем модуль fs – стандартный Node.js модуль для работы с файлами. В первом примере мы воспользуемся функцией readFile () – прочитаем файл, сохраним содержимое в переменной и выведем результат в консоль.

Начнем с настройки среды. Создадим папку node — files для хранения проекта:

В этой папке создадим текстовый файл greetings.txt для тестирования работы нашей программы:

Команда echo выводит строковый аргумент в терминал, а символ > перенаправляет вывод в файл greetings.txt .

Cоздадим и откроем в текстовом редакторе файл readFile.js . Например, с помощью nano:

Начнем с импорта внутри файла программы модуля fs :

Когда модуль fs только создавался, основным способом написания асинхронного кода в Node.js были коллбэки. Но по мере роста популярности промисов, команда Node.js поработала и над их поддержкой в модуле fs .

Создадим асинхронную функцию для чтения файла. Такие функции начинаются с ключевого слова async . С помощью функции можно разрешать промисы, используя await , вместо того чтобы связывать промис с помощью метода .then() .

Чтобы ловить ошибки асинхронного чтения файлов, заключаем вызов fs.readFile() в блок try. catch .

По умолчанию fs.readFile() возвращает объект, который может хранить файлы любого типа. Когда журналируется содержимое файла, все байты преобразуются в текст с помощью метода toString() .

Если обнаружена ошибка (если файл не найден или нет прав на чтение), в консоль выведется соответствующее сообщение.

Осталось лишь вызвать функцию.

Сохраняем файл программы и выходим из редактора. Запускаем скрипт:

Получаем следующий результат:

Создадим другой программный файл writeFile.js :

В этом примере мы напишем две функции: первая будет создавать CSV-файл, а вторая – добавлять в него данные.

Вставим в файл следующий код:

Сначала функция openFile() создает переменную csvHeaders , содержащую заголовки столбцов CSV-файла, а затем использует функцию fs.writeFile() для создания файла и записи в него данных. Первый аргумент – путь к файлу. Поскольку мы указали только имя, Node.js создаст файл в том же каталоге, в котором мы выполняем код. Второй аргумент – записываемые данные. Создадим еще одну функцию для добавления данных в конец файла:

Асинхронная функция addGroceryItem() принимает три аргумента: название товара, сумму и цену за единицу. Эти аргументы используются с шаблонным литеральным синтаксисом для формирования переменной csvLine , записываемой в файл.

Затем, как и в функции openFile() , используется метод writeFile() , но на этот раз есть третий аргумент: объект JavaScript c ключом flag и значением ‘a’ . Так мы сообщаем Node.js, что данные нужно добавить в конец файла. По умолчанию флаг имеет значение ‘w’ , при котором создается новый файл, если он не существует, иначе файл перезаписывается. Вы можете узнать больше о флагах файловой системы в документации Node.js .

Для завершения скрипта добавим в конец файла программы следующие строки:

В текущем каталоге будет создан новый файл groceries.csv .

Содержимое файла groceries.csv следующее:

Вызов openFile() создал новый файл и добавил заголовки столбцов. Последующие вызовы addGroceryItem() добавляют две строки с данными.

На этом шаге мы научимся удалять файлы с помощью функции unlink() модуля fs и напишем Node.js скрипт для удаления groceries.csv , созданного на предыдущем шаге. Создадим новый программный файл deleteFile.js :

Напишем в программном файле код, создающий асинхронную функцию deleteFile() , которая принимает путь к файлу в качестве аргумента и передает его функции fs.unlink() , чтобы та удалила файл из файловой системы:

Сохраняем файл и запускаем код:

На выходе получаем следующее:

Чтобы убедиться, что файла больше нет, используем команду ls :

Напоследок рассмотрим функцию перемещения. Перед тем как начать, создадим папку test-data , в которую будем перемещать файл:

Откроем для редактирования программный файл:

Создадим функцию moveFile() , вызывающую rename() . В ней необходимо указать путь к местоположению исходного и целевого файлов.

Функция rename() может переместить файл в другую папку, переименовать файл в текущем каталоге или сделать и то, и другое одновременно, как в нашем коде.