Percorsi dei File in Node.js
Percorsi dei File di Sistema
Ogni file nel sistema ha un percorso. Su Linux e macOS, un percorso potrebbe apparire così: /users/joe/file.txt
mentre i computer Windows hanno una struttura diversa, come ad esempio: C:\users\joe\file.txt
È necessario prestare attenzione quando si utilizzano i percorsi nelle proprie applicazioni, poiché questa differenza deve essere presa in considerazione.
Utilizzo del Modulo path
Si include questo modulo nei propri file usando:
const path = require('node:path')
e si possono iniziare a utilizzare i suoi metodi.
Ottenere Informazioni da un Percorso
Dato un percorso, è possibile estrarre informazioni da esso utilizzando questi metodi:
dirname
: ottiene la cartella padre 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.extname(notes) // .txt
import path from 'node:path'
const notes = '/users/joe/notes.txt'
path.dirname(notes) // /users/joe
path.extname(notes) // .txt
È possibile 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
È possibile unire due o più parti di un percorso usando path.join()
:
path.join('/users', 'joe', 'file.txt') // /users/joe/file.txt
È possibile 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 home folder
path.resolve('tmp', 'joe.txt') // /Users/joe/tmp/joe.txt se eseguito dalla mia home folder
In questo caso, Node.js aggiungerà semplicemente /joe.txt
alla directory di lavoro corrente. Se si specifica un secondo parametro come cartella, resolve
utilizzerà il primo come base per il secondo.
Se il primo parametro inizia con una barra, significa che è un percorso assoluto:
path.resolve('/etc', 'joe.txt') // /etc/joe.txt
path.normalize()
è un'altra funzione utile che tenterà di calcolare il percorso effettivo quando contiene specificatori relativi come .
o ..
, o barre doppie:
path.normalize('/users/joe/../test.txt') // /users/test.txt
Né resolve
né normalize
verificheranno se il percorso esiste. Calcolano semplicemente un percorso in base alle informazioni ricevute.