NodeJS. Запись и чтение файлов.
Всем привет! В этой статье мы рассмотрим, как записывать и читать файлы в NodeJS.
Платформа NodeJS позволяет записывать и читать файлы в операционной системе. Для этого нам потребуется использовать модуль FS(file system).
var fs = require('fs');
Для демонстрации считывания содержимого файлов давайте создадим файлик с названием readme.txt.
// содержимое файла readme.txt
Здесь какое-нибудь содержимое файла
Теперь давайте попробуем прочитать этот файл. Для этого нам потребуется написать следующее:
var text = fs.readFileSync('readme.txt', 'utf8');
console.log(text);
Мы используем метод, в который передаем первым параметром имя файла, а вторым – кодировку. Как понятно из названия, этот метод является синхронным. Это значит, что весь код, который идет ниже, выполнится только тогда, когда весь файл будет прочитан. Дальше мы просто записываем полученные данные в переменную, которую потом выводим на экран.
Теперь давайте попробуем считанное нами содержание файла записать в новый файл. Для этого напишем следующее:
fs.writeFileSync('writeme.txt', text);
Теперь после запуска кода вы увидите, что создался новый файлик с названием writeme.txt, в котором будет содержимое, записанное в переменную text из файла readme.txt.
Давайте рассмотрим, как использовать методы асинхронно. Например, считаем файлик readme.txt:
fs.readFile('readme.txt', 'utf8', function(error, data) {
console.log(data);
});
console.log('выведется раньше, чем данные из файла');
Использование почти такое же, но теперь мы также третьим параметром передаем функцию, где в качестве аргументов первым идет ошибка, а вторым содержимое файла, которое мы потом и выводим. Ниже я написал еще один вывод текста, чтобы показать вам, что метод действительно асинхронный, поэтому, пока идет считывание файла, выполнится код ниже, а только потом выведется текст из файлика.
Теперь давайте снова считаем содержимое файла readme.txt и запишем его в файл writeme.txt, но только теперь асинхронно.
fs.readFile('readme.txt', 'utf8', function(error, data) {
fs.writeFile('writeme.txt', data);
});
А на этом у меня сегодня все. Спасибо за внимание!
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.