Podręcznik

Operacje na plikach w Node.js

Wczytywanie plików

Do asynchronicznego wczytywania plików służy funkcja readFile z API promises modułu fs:

readFile([nazwa_pliku], [kodowanie])

Funkcja ta zwraca obiekt typu promise. Można jej użyć np. w następujący sposób:

const { readFile } = require('fs').promises;

readFile("my_file.txt", "utf-8").then(fileContents => {

  // Przetwarzanie treści pliku, zawartej w zmiennej fileContents:
  console.log(fileContents);

}).catch(rejectionReason => {

  // Poniższa instrukcja zostanie wywołana, jeśli
  // nie uda się wczytać pliku:
  console.error(rejectionReason);
});

Bez promises

W module fs jest jeszcze inna funkcja readFile, poza API promises, która również działa asynchronicznie, ale z wykorzystaniem funkcji callback:

readFile([nazwa_pliku], [kodowanie], [callback]);

Można jej używać np. w następujący sposób:

const fs = require('fs');

fs.readFile("my_file.txt", "utf-8", (err, fileContents) => {

  // "Wyrzucenie" błędu, który mógł wystąpić przy próbie wczytania pliku:
  if (err) throw err;

  // Przetwarzanie treści pliku, zawartej w zmiennej fileContents:
  console.log(fileContents);
});

Buffer

Jeśli nie poda się sposobu kodowania – drugiego argumentu funkcji readFile – otrzyma się zmienną klasy Buffer, czyli sekwencję bajtów. Wypisanie zawartości takiej zmiennej wprost za pomocą polecenia console.log(data) nie daje czytelnego efektu:

const { readFile } = require('fs').promises;

// Brak drugiego argumentu - sposobu kodowania:
readFile("my_file.txt").then(fileContents => {
  console.log(fileContents);
});
<Buffer 53 65 67 72 65 67 75 6a 20 c5 9b 6d 69 65 63 69>