Percorsi dei file in Node.js
Ogni file nel sistema ha un percorso. Su Linux e macOS, un percorso potrebbe apparire come: /users/joe/file.txt
, mentre i computer Windows sono diversi e hanno una struttura del tipo: C:\users\joe\file.txt
Devi prestare attenzione quando usi i percorsi nelle tue applicazioni, poiché questa differenza deve essere presa in considerazione.
Puoi includere questo modulo nei tuoi file usando const path = require('node:path');
e puoi iniziare a utilizzare i suoi metodi.
Ottenere informazioni da un percorso
Dato un percorso, puoi estrarre informazioni da esso utilizzando questi metodi:
dirname
: ottiene la cartella genitore di un filebasename
: ottiene la parte del nome del fileextname
: ottiene l’estensione del file
Esempio
const path = require("node:path");
const notes = "/users/joe/notes.txt";
path.dirname(notes); // /users/joe
path.basename(notes); // notes.txt
path.extname(notes); // .txt
Puoi ottenere il nome del file senza l’estensione specificando un secondo argomento a basename
:
path.basename(notes, path.extname(notes)); // notes
Lavorare con i percorsi
Puoi unire due o piĂą parti di un percorso usando path.join()
:
const name = "joe";
path.join("/", "users", name, "notes.txt"); // '/users/joe/notes.txt'
Puoi ottenere il calcolo del percorso assoluto di un percorso relativo usando path.resolve()
:
path.resolve("joe.txt"); // '/Users/joe/joe.txt' se eseguito dalla mia cartella home
In questo caso, Node.js aggiornerĂ semplicemente /joe.txt
alla directory di lavoro corrente. Se specifici una seconda cartella come parametro, resolve
utilizzerĂ la prima come base per la seconda:
path.resolve("tmp", "joe.txt"); // '/Users/joe/tmp/joe.txt' se eseguito dalla mia cartella home
Se il primo parametro inizia con una barra, ciò significa che è un percorso assoluto:
path.resolve("/etc", "joe.txt"); // '/etc/joe.txt'
path.normalize()
è un’altra funzione utile che cercherà di calcolare il percorso effettivo quando contiene specificatori relativi come .
o ..
, o doppi slash:
path.normalize("/users/joe/..//test.txt"); // '/users/test.txt'
Né resolve né normalize verificheranno se il percorso esiste. Calcolano solo un percorso in base alle informazioni ottenute.