Javaは当初、ファイルシステムにアクセスFile
するためのjava.io
パッケージでクラスを提供することから始まりました。このオブジェクトはファイル/ディレクトリを表し、ファイル/ディレクトリが存在するかどうかの確認、プロパティの取得、削除などの操作を実行できました。ただし、いくつかの欠点がありました。いくつか例を挙げると:
- Fileクラスには、copyメソッドなどの重要な機能がいくつかありませんでした。
- また、を返す多くのメソッドを定義しました
boolean
。想像できるように、エラーの場合はfalse
、例外をスローするのではなく、返されました。実際、開発者には、なぜ失敗したのかを知る方法がありませんでした。
- シンボリックリンクのサポートに関する適切な処理を提供しませんでした。
- 限られたファイル属性のセットが提供されました。
これらの問題を克服するために、java.nioパッケージがjava4に導入されました。主な機能は次のとおりです。
- チャネルとセレクター:チャネルは、メモリマップファイルなどの低レベルのファイルシステム機能を抽象化したものです。
- バッファ:すべてのプリミティブクラスのバッファリング(ブール値を除く)。
- 文字セット:バイトとUnicode記号をマップするための文字セット(java.nio.charset)、エンコーダー、およびデコーダー
java 7では、java.nio.fileパッケージが導入され、シンボリックリンク、ファイル属性アクセスの処理をより適切にサポートし、特にPath、Paths、Filesなどのクラスを介してファイルシステムの拡張をサポートします。詳細については、java.nio.fileパッケージの説明を参照してください。
これを考慮して:
NIOからNIO.2への大きな変更点は何ですか?(例:新しい方法、機能)?
それらは異なる目的を果たします。大きな変更点を指摘するには、まったく新しいパッケージを確認することをお勧めしますjava.nio.file
。
元のNIOパッケージを更新する必要があったのはなぜですか?
そうではありませんでした。更新されるのではなく、新しいパッケージが導入されました。
NIO.2は最近のNIOパッケージと同義ですか?NIOパッケージのパフォーマンスはNIO.2パッケージとどのように比較されますか?
いいえ、それらは同義ではありません。また、目的が異なるため、パフォーマンスを比較してもあまり意味がありません。NIOは、ファイル管理に重点を置いた、より抽象的な低レベルのデータI / OおよびNIO2です。
お役に立てれば。
[参考文献:Oracle Certified Professional Java SE7-SGGanesh and TusharSharmaによる包括的なOCJP7認定ガイド-第9章]