1. Pathclasse
Se vuoi scrivere un programma che faccia qualcosa con i file su disco, è abbastanza facile. Java ha molte classi che ti aiutano a lavorare sia con i file stessi che con i loro contenuti.
Le prime versioni di Java utilizzavano classi come Filee FileInputStreamper lavorare con i file. Tuttavia, la Fileclasse è ora deprecata e non se ne consiglia l'uso. Naturalmente, potresti ancora incontrarlo nel codice, nei parametri del metodo o nei costruttori di classi.
Fin dall'inizio, inizieremo a imparare come lavorare con i file usando la Pathclasse. Pathè la classe che ha sostituito File. È più sicuro ed efficiente.
Pathclasse
Tecnicamente, Pathnon è una classe, è un'interfaccia. Questo viene fatto per consentire la scrittura di un discendente della Pathclasse per ogni sistema operativo (e file system).
Windows ha uno standard per la scrittura dei percorsi dei file e Linux ne ha un altro. Naturalmente, ci sono molti altri sistemi operativi nel mondo e ognuno ha il proprio standard.
Ecco perché l' Pathinterfaccia è usata ovunque nei metodi che lavorano con i file, anche se in realtà il lavoro avviene attraverso le sue classi discendenti: WindowsPath, UnixPath, ...
Creazione di un Pathoggetto
Per creare un Pathoggetto (che sarà effettivamente un oggetto della WindowsPathclasse discendente), è necessario utilizzare un'istruzione come questa:
Path name = Path.of(path);
Dove nameè il nome di una Pathvariabile ed pathè il percorso del file (o directory) incluso il nome del file (o directory). Ed ofè un metodo statico della Pathclasse.
Il of()metodo viene utilizzato per creare WindowsPathoggetti se il programma è in esecuzione su Windows. Se il programma è in esecuzione su Linux, UnixPathvengono creati gli oggetti. Non puoi creare un Pathoggetto usando codice come .new Path()
Esempi:
| Codice | Nota |
|---|---|
|
Percorso del file |
|
Percorso della directory |
Non è necessario che il file (o la directory) esista affinché Pathesista un oggetto valido. Forse vuoi solo creare un file... Un Pathoggetto è come un truccato String: non è legato a un file specifico su disco - memorizza solo un certo percorso su disco. Questo è tutto.
2. Metodi del Pathtipo
L' Pathinterfaccia ha alcuni metodi interessanti. I più interessanti sono presentati nella tabella sottostante.
| Metodo | Descrizione |
|---|---|
|
Restituisce la directory principale |
|
Restituisce il nome del file senza la directory |
|
Restituisce la directory radice da un percorso |
|
Controlla se il percorso corrente è assoluto |
|
Converte il percorso in assoluto |
|
Rimuove i caratteri jolly in un nome di directory. |
|
Costruisce un nuovo percorso assoluto da percorsi assoluti e relativi. |
|
Ottiene un percorso relativo da due percorsi assoluti. |
|
Controlla se il percorso corrente inizia con un determinato percorso |
|
Controlla se il percorso corrente termina con un determinato percorso |
|
Divide il percorso in parti usando /come delimitatore. Restituisce il numero di parti. |
|
Divide il percorso in parti usando /come delimitatore. Restituisce una parte in base al relativo indice. |
|
Divide il percorso in parti usando /come delimitatore. Restituisce il sottopercorso che corrisponde all'intervallo specificato. |
|
Converte un oggetto in un oggetto PathdeprecatoFile |
|
Converte un Pathoggetto in un URIoggetto |
Di seguito una breve descrizione delle modalità esistenti.
3. Dividere un percorso in parti
Il getParent()metodo restituisce il percorso che punta alla directory padre per il percorso corrente. Indipendentemente dal fatto che questo percorso sia una directory o un file:
| Codice | Valore |
|---|---|
|
|
|
|
|
|
Il getFileName()metodo restituisce un singolo nome di file (o directory), qualunque cosa venga dopo l'ultimo delimitatore:
| Codice | Valore |
|---|---|
|
|
|
|
|
|
Il getRoot()metodo restituisce il percorso della directory principale:
| Codice | Valore |
|---|---|
|
|
4. Percorsi assoluti e relativi
Esistono due tipi di percorsi: assoluto e relativo. Un percorso assoluto inizia dalla directory principale. Per Windows, questa potrebbe essere la c:\cartella; per Linux — la /directory
Un percorso relativo è significativo rispetto a qualche directory. Cioè, è come la fine della strada, ma senza l'inizio. Puoi trasformare un percorso relativo in un percorso assoluto e viceversa
boolean isAbsolute()metodo
Il metodo controlla se il percorso corrente è assoluto
| Codice | Valore |
|---|---|
|
|
|
|
Path toAbsolutePath()metodo
Converte il percorso in assoluto. Se necessario, vi aggiunge la directory di lavoro corrente:
| Codice | Valore |
|---|---|
|
|
|
|
Path normalize()metodo
Nel percorso, invece del nome di una directory, puoi scrivere "..", che significa tornare indietro di una directory . La normalizzazione elimina queste cose. Esempi:
| Codice | Valore |
|---|---|
|
|
|
|
Path relativize(Path other)metodo
Il relativize()metodo consente di costruire le "differenze tra percorsi": un percorso relativo a un altro
| Codice | Valore |
|---|---|
|
|
|
|
|
IllegalArgumentException: i due percorsi hanno una "radice" diversa (dischi diversi) |
Path resolve(Path other)metodo
Il resolve()metodo fa l'opposto di relativize(): costruisce un nuovo percorso assoluto da un percorso assoluto e uno relativo.
| Codice | Valore |
|---|---|
|
|
|
|
toFile()metodo
Il metodo restituisce un Fileoggetto deprecato che memorizza lo stesso percorso file dell'oggetto Path.
toURI()metodo
Il metodo converte il percorso in un URI standard e restituisce un oggetto che contiene il percorso del file:
| Percorso del file | URI del file |
|---|---|
|
|
GO TO FULL VERSION