Verso Java 7: la nuova I/O API (parte 1)
Mercoledì 10 Marzo 2010 - 08:35
di Giuseppe de Santis

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.
Commenti
1
[…] Dopo aver esaminato la classe path è la volta delle directory, la cui visualizzazione è stata fortemente modificata nella nuova API a tutto vantaggio della scalabilità: niente più array per modellare il contenuto di una directory (con ovvi cali di performance in caso di un grande numero di elementi presenti nella directory), ma un oggetto di tipo Iterator in grado di scorrerne il contenuto più il supporto a filtri ed espressioni regolari. […]
# - postato da Verso Java 7: la nuova I/O API (parte 2) | Edit - Il blog di HTML.it - 12 Marzo 2010 - 07:43







