Синхронное и асинхронное чтение файла в Node.js

Синхронное и асинхронное чтение файла в Node.js
5 (100%) 4 votes

Для работы с файлами в Node.js нам нужно подключить модуль fs. После подключения модуля, в переменную fs мы получим объект, который имеет все необходимые методы и свойства для работы с файлами.

const fs = require("fs");  // Подключаем модуль fs

 

В этой статье мы узнаем как можно читать файлы в Node.js. В Node.js читать файлы можно двумя способами — асинхронный и синхронный.

Асинхронное чтение файла — fs.readFile( )

Метод readFile может принимать 3 аргумента. Из них второй аргумент является обязательным.

fs.readFile(файл[, опции], callback)

  • файл <String> | <Buffer> | <Integer> Имя / адрес файла или файловый дескриптор
  • опции <Object> | <String>
    • кодировка <String> | <Null> по умолчанию = null
    • флаг <String> по умолчанию = ‘r’
  • callback <Function>
  • Первый аргумент — это адрес файла, который нужно читать;
  • Второй аргумент — это опции, который является обязательным. Опции можно указать в виде объекта (для указание нескольких опций) и в виде строки;
  • Третий аргумент — это функция обратного вызова (callback функция). Функция вызывается после чтения файла.

 

Пример чтение файла асинхронно:

const fs = require("fs");

fs.readFile('./test.txt', (err, data) => {
    if (err) throw err;
    console.log(data);
});

В функцию обратного вызова передается два аргумента (err, data). Если при чтение файла возникла ошибка, то в переменную err получим объект с описанием ошибки. А аргумент data содержит содержимое файла.

Если при чтение файла ми не указали кодировку, то данные будут возвращены в виде буфера.

Пример чтение файла с указанием опции:

const fs = require("fs");

fs.readFile('./test.txt', 'utf8', (err, data) => {
    if (err) throw err;
    console.log(data);
});

 

Синхронное чтение файла — fs.readFileSync( )

Многие асинхронные функции в Node.js имеют синхронный вариант. И для чтение файлов в синхронном режиме есть метод readFileSync. Он может принимать 2 аргумента.

fs.readFileSync(файл[, опции])

  • файл <String> | <Buffer> | <Integer> Имя / адрес файла или файловый дескриптор
  • опции <Object> | <String>
    • кодировка <String> | <Null> по умолчанию = null
    • флаг <String> по умолчанию = ‘r’
  • Первый аргумент — это адрес файла, который нужно читать;
  • Второй аргумент — это опции, который является обязательным. Опции можно указать в виде объекта (для указание нескольких опций) и в виде строки;

Пример чтение файла синхронно:

const fs = require("fs");

let data = fs.readFileSync('./test.txt', 'utf8');
console.log(data);

 


Об авторе

Занимаюсь программированием уже более 7 лет. Часто использую JavaScript (Node.js) и Python.

Комментарии