Node.js dla początkujących - Część 9: Obsługa plików

1/15/2025 Kurs JavaScript

Mateusz Kędziora

image

Witajcie, drodzy adepci JavaScriptu! Dziś zanurzymy się w fascynujący świat operacji na plikach w Node.js. Z pomocą wbudowanego modułu fs (file system – system plików) nauczymy się, jak odczytywać i zapisywać dane, otwierając drzwi do tworzenia interaktywnych aplikacji, serwerów i narzędzi. Gotowi na dawkę wiedzy? Zaczynamy!

Po co nam w ogóle praca z plikami?

Wyobraźcie sobie aplikację, która musi przechowywać dane użytkowników, konfigurację programu, logi błędów czy po prostu treść strony internetowej. Właśnie w takich sytuacjach niezastąpione stają się operacje na plikach. Moduł fs w Node.js dostarcza nam narzędzi do wykonywania tych zadań sprawnie i efektywnie.

fs – Twój przyjaciel od plików

Moduł fs jest wbudowany w Node.js, co oznacza, że nie musimy go instalować oddzielnie. Aby z niego skorzystać, wystarczy go zaimportować:

const fs = require('fs');

Odczyt plików – dwa podejścia

Moduł fs oferuje dwa sposoby odczytu plików: synchroniczny i asynchroniczny. Zrozumienie różnicy między nimi jest kluczowe dla pisania wydajnych aplikacji.

  • Odczyt synchroniczny (blokujący):

Metody synchroniczne blokują wykonywanie programu do momentu zakończenia operacji. Są proste w użyciu, ale mogą spowolnić działanie aplikacji, szczególnie przy dużych plikach. Używamy ich rzadko, ale warto znać. Przykład:

try {
  const data = fs.readFileSync('plik.txt', 'utf8'); // 'utf8' określa kodowanie
  console.log(data);
} catch (err) {
  console.error('Błąd odczytu pliku:', err);
}
  • Odczyt asynchroniczny (nieblokujący):

Metody asynchroniczne nie blokują wykonywania programu. Operacja odczytu jest wykonywana w tle, a po jej zakończeniu wywoływana jest funkcja zwrotna (callback). To podejście jest znacznie bardziej wydajne, szczególnie w aplikacjach serwerowych. Przykład:

fs.readFile('plik.txt', 'utf8', (err, data) => {
  if (err) {
    console.error('Błąd odczytu pliku:', err);
    return;
  }
  console.log(data);
});

console.log("Ten kod wykona się przed odczytaniem pliku!"); //ważne!

Zauważ, że komunikat “Ten kod wykona się przed odczytaniem pliku!” zostanie wyświetlony przed treścią pliku. To właśnie istota asynchroniczności.

Zapis plików

Podobnie jak w przypadku odczytu, mamy do dyspozycji metody synchroniczne i asynchroniczne do zapisu plików:

  • Zapis synchroniczny:
try {
  fs.writeFileSync('nowy_plik.txt', 'Treść do zapisania', 'utf8');
  console.log('Plik zapisany synchronicznie.');
} catch (err) {
  console.error('Błąd zapisu pliku:', err);
}
  • Zapis asynchroniczny:
fs.writeFile('nowy_plik.txt', 'Treść do zapisania asynchronicznie', 'utf8', (err) => {
  if (err) {
    console.error('Błąd zapisu pliku:', err);
    return;
  }
  console.log('Plik zapisany asynchronicznie.');
});

Obsługa błędów – podstawa bezpieczeństwa

Zawsze pamiętaj o obsłudze błędów! Operacje na plikach mogą zakończyć się niepowodzeniem z różnych przyczyn (np. brak pliku, brak uprawnień). W powyższych przykładach użyliśmy bloku try...catch dla metod synchronicznych i funkcji zwrotnej z argumentem err dla metod asynchronicznych.

Praca domowa

  1. Stwórz program, który odczyta treść pliku dane.txt, zamieni wszystkie litery na wielkie i zapisze wynik do nowego pliku dane_wielkie.txt. Użyj metod asynchronicznych.
  2. Napisz program, który sprawdzi, czy dany plik istnieje. Jeśli tak, wyświetli jego rozmiar w bajtach. Jeśli nie, wyświetli odpowiedni komunikat. Skorzystaj z metody fs.existsSync() i fs.stat().

Eksperymentuj i odkrywaj!

Zachęcam Was do samodzielnego eksperymentowania z modułem fs. Spróbujcie różnych operacji, takich jak zmiana nazw plików, usuwanie plików, tworzenie katalogów (foldery). Dokumentacja Node.js jest Waszym najlepszym przyjacielem! Link do dokumentacji: https://nodejs.org/api/fs.html.

Co dalej?

To tylko krótki wstęp do pracy z plikami w Node.js. W kolejnych artykułach zgłębimy bardziej zaawansowane tematy, takie jak pełne wyjaśnienie asynchroniczności czy pierwszy serwer http. Przeczytajcie również moje pozostałe posty o kursie Javascript dla początkujących, gdzie znajdziecie wiele przydatnych informacji.

Mam nadzieję, że ten artykuł był dla Was pomocny. Do zobaczenia wkrótce!

Polecane artykuły