Jak usunąć plik w Node.js ?

Web Developer
Jak usunąć plik w Node.js ?

Pisząc aplikacje czy to w php, C#, .NET czy też Java Script prędzej czy później dochodzimy do konieczności poznania podstawowych operacji na plikach. Zaczynamy od tych najprostszych, tworzenie plików, później ich odczyt kończąc na kasowaniu. W tym wpisie skupię się na kasowaniu plików w Node.js czyli w języku Java Script.

Moduł – FS

Node.js udostępnia specjalny moduł do operacji na plikach w sposób synchroniczny oraz asynchroniczny. Dla osób nie wtajemniczonych wyjaśnię, że operacje wykonywane w sposób synchroniczny to takie na których koniec czekamy i dopiero po ich wykonaniu wykonywane są kolejne linie kodu. Najlepiej zobrazuje to poniższy schemat.

Na schemacie mamy trzy bloki oznaczone kolejno cyframi, które reprezentują linie kodu. Zaczynamy od nr. 1 odpowiedzialnego za wyświetlenie jakiegoś tekstu, po jego wyświetleniu przechodzimy no nr. 2 czyli usunięcia pliku. Dopiero po usunięciu pliku przechodzimy do punktu nr. 3, czyli wyświetlenia jakiegoś tekstu. Kod ten ma jedną wadę, mianowicie czekamy aż plik zostanie usunięty i dopiero wtedy przechodzimy do kolejnych operacji. Czy nie było by fajnie gdybym tylko zlecili zadanie usunięcia pliku i wykonywali kolejne operacje ? Tym właśnie jest asynchroniczność, zlecamy wykonanie zadania i idziemy dalej. Najlepiej zobrazuje to kolejny schemat:

Podobnie jak w pierwszym przypadku zaczynamy od operacji nr. 1, a następnie po jej wykonaniu przechodzimy do operacji nr. 2. Jednak operacja ta jedynie zleca usunięcie pliku i przechodzi do operacji nr. 4. W ten sposób nie zablokowaliśmy wykonywania kolejnych operacji, jednak zastanawiacie się co z operacją usuwania pliku. Otóż gdy operacja zostanie zakończona zostanie wywołana funkcja callback, którą przekazujemy do wywołań asynchronicznych. W uproszczeniu możemy powiedzieć że w przypadku funkcji asynchronicznej kolejność wywołań jest następująca: 1, 2, 4, 3.

Teoria za nami więc zobaczmy jak możemy zaimportować moduł FS do naszej aplikacji, a jest to banalnie proste i sprowadza się do jednej linii kodu:

const fs = require('fs');

Do stałej fs przypisujemy moduł File System w skrócie fs. Dzięki czemu możemy wykonywać operacje na systemie plików. Opis modułu oraz jego możliwości znajdziecie w dokumentacji https://nodejs.org/dist/latest-v8.x/docs/api/fs.html

Synchroniczne usuwanie plików

Zaczniemy od synchronicznego usuwania plików, gdyż jest ono bardziej naturalne dla większości z nas.

// załadowanie modułu File System<
const fs = require('fs');

// usunięcie pliku 
fs.unlinkSync('C:\\plik.txt');

// wyświetlenie komunikatu
console.log('Deleted file!!!');

Kod jest bardzo prosty i sprowadza się do importu modułu File System. Następnie zostaje wywołana metoda unlinkSync, przyjmująca jako parametr ścieżkę do pliku, który ma zostać usunięty. I ostatni element to wyświetlenie komunikatu o usunięciu pliku.

Asynchroniczne usuwanie plików

Kod asynchroniczny jest odrobinkę bardziej skomplikowany i jest go nieco więcej. Zobaczymy zatem jak wygląda asynchroniczne usunięcie pliku:

// załadowanie modułu File System<
const fs = require('fs');
 
// zlecenie zadania usunięcia pliku
fs.unlink('C:\\plik.txt', function(error) {

    // sprawdzenie czy wystąpił błąd
    if (error) 
    {
        // rzucenie wyjątku
        throw error;
    }

    // wyświetlenie komunikatu o usunięciu pliku
    console.log('Deleted file!!!');
});

Zaczynamy standardowo od importu modułu File System. Po czym przechodzimy do wywołania metody unlink, która przyjmuje dwa parametry. Pierwszy parametr to ścieżka do usuwanego pliku, drugi to funkcja wywoływana po zakończeniu operacji usuwania pliku lub w przypadku wystąpienia błędu. Funkcja ma jeden parametr do którego przekazywana jest informacja o ewentualnym błędzie, jeśli błąd nie wystąpił wartością parametru będzie null.

I to by było na tyle jeśli chodzi o usuwanie plików w Node.js, jeśli macie jakieś pytania lub wątpliwości to zapraszam do komentarzy 🙂