Всем привет! В этом материале рассмотрим, как записывать и читать файлы в NodeJS .

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);
});

А на этом у меня сегодня все. Спасибо за внимание!