L’avvento di Java 7 porterà grosse novità anche tra le librerie di I/O: si tratta di modifiche ormai necessarie in quanto la vecchia API, in buona parte risalente ai tempi di Java 1.0, si è spesso rivelata difficile da estendere e da gestire. Si pensi alla gestione dei file:
- problemi con la rinomina;
- scarso supporto alla gestione di permessi e metadati;
- scarsa efficienza nella copia;
- gestione delle notifiche di modifica (change notifications) poco efficiente;
- difficile gestione delle eccezioni (molti metodi della I/O API attuale non ne sollevano esplicitamente, per cui molto spesso è difficile capire perché un’operazione non sia andata a buon fine;
- nessuna possibilità di sviluppare implementazioni di filesystem ad hoc, ad esempio per la gestione di archivi compressi.
Alla base della nuova API per l’I/O sarà la classe java.io.file.Path
, successore designato di java.io.File
; Path
modella un percorso (assoluto o relativo) ad un file nel file system, senza che l’esistenza effettiva del file sia necessaria.
àˆ garantita la retrocompatibilità tramite l’introduzione di un metodo toPath
nella vecchia classe File
: quindi, se ci si trovasse di fronte ad una cancellazione file non riuscita tramite java.io.File
senza eccezioni sollevate, sarà possibile convertire il File
in un Path
, invocare la cancellazione sul Path
e ricevere l’appropriata eccezione di I/O. In generale, a partire da un oggetto Path
è possibile leggere o manipolare le proprie componenti, risalire l’albero delle directory, operare CRUD su file e directory.
Nel prossimo post l'attenzione sarà rivolta su visualizzazione di directory, link simbolici, attributi dei file, notifiche e gestione della sicurezza.