Java ha iniziato inizialmente offrendo la classe File
, nel pacchetto java.io
per accedere ai file system. Questo oggetto rappresenta un file/directory e ti permette di eseguire alcune operazioni come controllare se esiste un file/directory, ottenere le proprietà ed eliminarlo. Aveva, tuttavia, alcuni difetti. Per citarne alcuni:
- La classe File mancava di alcune funzionalità importanti, come un metodo di copia.
- Ha inoltre definito molti metodi che hanno restituito
boolean
. Come si può immaginare, in caso di errore, è stato restituito false
anziché generare un'eccezione. Lo sviluppatore non aveva, in effetti, alcun modo di sapere perché avesse fallito.
- Non ha fornito una buona gestione sul supporto dei collegamenti simbolici.
- È stato fornito un set limitato di attributi di file.
Per superare questi problemi, pacchetto java.nio stato introdotto in java 4. Le caratteristiche principali sono:
- Canali e Selettori: Un canale è un astrazione di livello inferiore funzioni del file system, ad esempio file mappati in memoria.
- Buffer: buffering per tutte le classi primitive (eccetto per Boolean).
- Charset: Charset (java.nio.charset), codificatori e decodificatori alla mappa byte e simboli Unicode
con Java 7 pacchetto java.nio.file viene introdotto fornire un migliore supporto per la gestione collegamenti simbolici , accesso agli attributi di file e specialmente per supportare il file system esteso attraverso classi come Path, Paths e Files. Potresti voler dare un'occhiata allo java.nio.file package description per ottenere ulteriori dettagli al riguardo.
Con questo in mente:
Quali sono alcuni grandi cambiamenti da NIO a NIO.2? (ad esempio, nuovi metodi, caratteristiche )?
Servono a scopi diversi. Per segnalare grandi cambiamenti potresti voler dare un'occhiata al nuovo pacchetto java.nio.file
.
Perché il pacchetto NIO originale deve essere aggiornato?
Non ha funzionato. Un nuovo pacchetto è stato introdotto piuttosto che aggiornato.
Attualmente NIO.2 è sinonimo di pacchetto NIO? Come si confronta la prestazione del pacchetto NIO con il pacchetto NIO.2?
No, non sono sinonimi. Inoltre, non ha molto senso confrontare le prestazioni tra di loro, poiché servono a scopi diversi. NIO un I/O di dati di basso livello più astratto e NIO2 focalizzati sulla gestione dei file.
Spero che questo aiuti.
[Bibliografia: Oracle Certified Professional Java SE7 - Una guida completa Certificazione OCJP7, da S.G.Ganesh e Tushar Sharma - Capitolo 9]
fonte
2014-08-28 00:57:54
NIO2 introduce l'I/O asincrono e il pacchetto java.nio.files. – EJP
È così? Ho avuto l'impressione che NIO.2 fosse qualcosa di enorme. –
Prima avevano IO. Quindi hanno introdotto "New IO". Quindi volevano introdurre più funzionalità, quindi l'hanno chiamato intelligentemente "New IO 2". – Kayaman