9 Java NIO
Java NIO (New Input/Output) APIは、データのコンテナであるバッファと、バッファをサポートするその他の構造およびメカニズムを定義します。
java.nioパッケージには、次のものをサポートするクラスが含まれます:
- バッファ: 特定のプリミティブ型のデータを一定の容量だけ格納するコンテナです。java.nioパッケージを参照してください。
- 文字セット: 16ビットUnicode文字のシーケンスとバイトのシーケンス間の名前付きマッピングです。文字セットのサポートには、バイトとUnicode文字間で変換するデコーダおよびエンコーダが含まれます。java.nio.charsetパッケージを参照してください。
- チャネル: ハードウェア・デバイス、ファイル、ネットワーク・ソケットのほか、個別の入出力操作(読み込み、書き込みなど)を実行できるプログラム・コンポーネントなどのエンティティへのオープン接続を表します。java.nio.channelsパッケージを参照してください。
- 多重化された非ブロックI/O: 多重化は、1つのチャネルで複数のI/O操作を処理する機能です。これは、選択可能チャネルでサポートされます。選択可能チャネルは、ブロック・モードまたは非ブロック・モードに設定できます。ブロック・モードの場合、チャネル上で呼び出された入出力操作は、前の操作が完了するまでブロックされます。非ブロック・モードの場合、入出力操作はブロックされず、要求されたバイト数より少ないバイト数が転送されます。バイトが一切転送されない場合もあります。SelectableChannelクラスを参照してください。
Java NIOの例
次のコード例では、Java NIO APIを示します: