В этой части учебника мы разберём как в Node.js происходит работа с файлами, это одна из особенностей Node.js перед чистым JavaScript, поэтому обязательно к прочтению.
Node.js работа с файлами:
Для работы с файлами в Node.js, первым делом вам надо подключить стандартную библиотеку, которая называется «fs», вот как её подключить:
1 | const fs = require("fs"); |
Вам больше нечего делать не надо, теперь можете работать с ней.
Чтение файлов:
Для чтения файлов есть два метода, первый это readFile()
, второй readFileSync()
, различие между ними в том, что один асинхронный, другой синхронный соответственно.
Для примера я создам файл «text.txt» в корневой папке проекта, и написал там «Hello World!», вот как мы прочитаем это файл:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // Асинхронное чтение файла fs.readFile("text.txt", "utf8", function(error, data) { console.log("Асинхронное чтение файла"); // Если есть ошибка то if(error) { // Вывести её console.log(error) } // Выводим что находиться в файле console.log(data); }); console.log("Синхронное чтение файла") // Синхронное чтение файла let fileData = fs.readFileSync("text.txt", "utf8"); Выводим что есть в файле console.log(fileData); |
В начале мы делаем асинхронный запрос, метод readFile()
, принимает в себя три параметра, первый, это путь до файла, он может быть как относительным, так и абсолютным, второй, это кодировке в которой нужно открыть файл, в нашем «utf-8», последний, это collback функция, которая, которая имеет в свою очередь ещё два параметра, это error, ошибка и data, это текст который мы получили из файла.
Внутри этой функции мы проверяем ошибки и выводим то что есть у нас в файле. Потом делаем синхронный запрос, он принимает только два параметра, это путь до файла и кодировка соответственно, а возвращает текст который есть в файле.
Также мы выводим что мы получили. Запускаем нашу программу и вот что мы видим:
Как видите всё сработало как надо, тут вы можете заметить, что сначала сначала сработал синхронный код, а потом уже асинхронный, об этом я расскажу в одной из следующих статьей.
Запись в файл:
Для этого используется методы writeFile()
и writeFileSync()
, для асинхронного и синхронного, по сути они похоже на предыдущие, но немного другие.
Ещё скажу, что дальше я буду использовать примеры только с асинхронными методами, так как различий особо нет, разве что ещё добавляется collback функция в параметры для первых методов, вот пример:
1 2 3 4 5 6 7 | fs.writeFile("text.txt", "Hello мир!", function(error){ if(error) { return }; let data = fs.readFileSync("text.txt", "utf8"); console.log(data); }); |
Принцип тут такое-же как и при получении данных файла, но только второй параметр, это срока которую нужно записать в файл, а не кодировка.
Внутри collback функции мы проверяем есть ли ошибки, если да, то выходим из функции, если нет, то получаем наш файл, в который мы записали и выводим что в нём есть, вот что получается:
Как видите всё сработало, но есть одна проблема, как вы помните, выше мы записали «Hello World!» в «text.txt», всего этого нет тут, это потому-что метод перезаписывает файл, для того чтобы ему добавить запись, можно использовать appendFile()
или appendFileSync()
, вот пример их использования:
1 2 3 4 5 6 7 | fs.appendFile("text.txt", "Чем занят?", function(error){ if(error) { return }; let data = fs.readFileSync("text.txt", "utf8"); console.log(data); }); |
Мы тут просто заменили writeFile()
на appendFile()
, и вот что теперь выводиться в терминале:
Теперь это работает так как нам и надо.
Удаление файла:
Последние что мы рассмотрим, это удаление файлов, для этого нам нужны методы unlink()
или unlinkSync()
, вот пример использования:
1 2 3 4 5 6 | fs.nlink("text.txt", function(error){ if(error) { return }; console.log("Удаление файла"); }); |
Как видите первым параметром используется название или путь до файла который нужно удалить, второй это collback функция.
Вывод:
В этой части учебника мы разобрали как в Node.js происходит работа с файлами, но только самое основное, если вам надо больше, то почитайте документацию этой библиотеки.