1. Files
classe
Per lavorare con i file, esiste una classe di utilità slick: java.nio.file.Files
. Ha metodi per ogni occasione. Tutti i metodi di questa classe sono statici e operano sull'oggetto Path. Esistono molti metodi, quindi considereremo solo i più importanti:
Metodo | Descrizione |
---|---|
|
Crea un nuovo file il cui percorso èpath |
|
Crea una nuova directory |
|
Crea più directory |
|
Crea un file temporaneo |
|
Crea una directory temporanea |
|
Elimina un file o una directory se è vuoto |
|
Copia un file |
|
Sposta un file |
|
Controlla se il percorso è una directory e non un file |
|
Controlla se il percorso è un file e non una directory |
|
Controlla se esiste un oggetto nel percorso specificato |
|
Restituisce la dimensione del file |
|
Restituisce l'intero contenuto di un file come matrice di byte |
|
Restituisce l'intero contenuto di un file come stringa |
|
Restituisce l'intero contenuto di un file come un elenco di stringhe |
|
Scrive una matrice di byte in un file |
|
Scrive una stringa in un file |
|
Restituisce una raccolta di file (e sottodirectory) dalla directory specificata |
2. Creazione di file e directory
I file e le directory sono molto facili da creare. Convinciamoci con alcuni esempi:
Codice | Nota |
---|---|
|
Crea un file |
|
Crea una directory |
|
Crea una directory e tutte le sottodirectory necessarie se non esistono. |
3. Copiare, spostare e cancellare
Copiare, spostare ed eliminare file è altrettanto semplice. Questo vale anche per le directory, ma devono essere vuote.
Codice | Nota |
---|---|
|
Copia un file |
|
Sposta e rinomina un file |
|
Elimina un file |
4. Verifica del tipo e dell'esistenza di un file
Quando hai un percorso fornito da qualcun altro, vuoi sapere se si tratta di un file o di una directory. E in generale, esiste o no un tale file/directory?
Ci sono anche metodi speciali per questo. Puoi anche scoprire facilmente la lunghezza di un file:
Codice | Nota |
---|---|
|
|
|
|
|
|
|
|
5. Lavorare con i contenuti dei file
Infine, esistono tutta una serie di metodi che facilitano la lettura o la scrittura del contenuto di un file. Esempio:
Codice | Descrizione |
---|---|
|
Legge il contenuto del file come un elenco di stringhe. Visualizza le stringhe |
6. Ottenere il contenuto di una directory
Il metodo più interessante rimane ancora. Viene utilizzato per ottenere file e sottodirectory in una determinata directory.
Stiamo parlando del newDirectoryStream()
metodo, che restituisce un DirectoryStream<Path>
oggetto speciale. Ha un iteratore (!) che puoi usare per ottenere tutti i file e le sottodirectory di una data directory.
Questo è più facile di quanto sembri.
Codice | Descrizione |
---|---|
|
Ottieni un oggetto con un elenco di file Passa sopra l'elenco dei file |
L' DirectoryStream<Path>
oggetto ha due proprietà. Innanzitutto, ha un iteratore che restituisce i percorsi dei file e possiamo utilizzare questo oggetto all'interno di un for-each
ciclo.
E in secondo luogo, questo oggetto è un flusso di dati, quindi deve essere chiuso in modo esplicito utilizzando il close()
metodo o dichiarato l'uso all'interno di un try-with-resources
blocco.
7. Files.newInputStream
metodo
A partire da Java 5, le classi FileInputStream
e FileOutputStream
sono state deprecate. Uno dei loro svantaggi era che quando vengono creati oggetti di queste classi, i file vengono immediatamente creati su disco. E tutte le eccezioni relative alla creazione di file potrebbero essere potenzialmente generate.
Successivamente questa è stata riconosciuta come non la decisione migliore. Di conseguenza, si consiglia di utilizzare i metodi della java.nio.Files
classe di utilità per creare oggetti file.
Ecco un confronto tra il vecchio approccio e il nuovo approccio alla creazione di file:
Prima |
---|
|
Dopo |
|
E c'è un sostituto simile per FileOutputStream
:
Prima |
---|
|
Dopo |
|
GO TO FULL VERSION