New I/O API |
ドキュメントの目次 |
v1.4 で導入された New I/O (NIO) API は、バッファ管理、スケーラブルなネットワークとファイル入出力、文字セットのサポート、および正規表現マッチングの分野で新しい機能を提供し、パフォーマンスを向上させています。 NIO API は、java.io
パッケージの入出力機能を補足するものです。機能
NIO API には、次の機能が含まれています。
- プリミティブ型のデータ用のバッファ
- 文字セットのエンコーダおよびデコーダ
- Perl スタイルの正規表現に基づくパターンマッチング機能
- チャネル (新しいプリミティブ入出力の抽象化)
- ロックとメモリマッピングをサポートするファイルインタフェース
- スケーラブルなサーバに出力するための、多重化された非ブロック入出力機能
例
API の参照先
新しいパッケージ、クラス、およびインタフェース
注: このドキュメントでは、J2SE v 1.4 FCS リリース時点の NIO API について説明します。 Beta 2 リリースと Beta 3 リリースの相違点については、「NIO API: Beta 3 の変更点」を参照してください。 Beta 3 リリースと RC リリースの相違点については、「NIO API: RC の変更点」を参照してください。 RC のドキュメントは、RC リリース後に変更され、「その他」の変更点が追加されました。 RC リリースと FCS リリースの間での API の変更はありません。
java.nio
パッケージ: バッファ。NIO API 全体で使用されるjava.nio.channels
パッケージ: チャネルとセレクタjava.nio.charset
パッケージ: 文字エンコーディングjava.nio.channels.spi
パッケージ: チャネルのためのサービスプロバイダクラスjava.nio.charset.spi
パッケージ: 文字セットのためのサービスプロバイダクラスjava.util.regex
パッケージ: 正規表現で指定されたパターンに対して文字シーケンスをマッチングするためのクラスjava.lang.CharSequence
インタフェース:java.util.regex
パッケージのメソッドに引数として渡せるオブジェクトによって実装されるインタフェース。String
、StringBuffer
、およびjava.nio.CharBuffer
クラスがこのインタフェースを実装する注: 新しい
InetSocketAddress
およびSocketAddress
クラスは、厳密には NIO API の一部ではありませんが、NIO API によって使用されます。改訂されたクラスおよびインタフェース
FileInputStream
およびFileOutputStream
クラスでは、基本となるFileChannel
オブジェクトを返すgetChannel
メソッドが追加され、close
メソッドは基本となるチャネルをクローズするように改訂された- 同様に、
RandomAccessFile
クラスでは、getChannel
メソッドが追加され、close
メソッドは基本となるチャネルをクローズするように改訂された。RandomAccessFile
コンストラクタが、モード文字「s」と「d」をサポートするようになり、ファイルを開くときに、同期書き込みまたは同期データ書き込みを指定できるようになったInputStreamReader
およびOutputStreamWriter
クラスでは、ストリームとCharset
オブジェクトを引数にとるコンストラクタが追加され、getEncoding
メソッドが、使用されているエンコーディングの伝統名を返すように改訂された 既存のCharsetDecoder
オブジェクトを取るInputStreamReader
のコンストラクタと既存のCharsetEncoder
オブジェクトを取るOutputStreamWriter
のコンストラクタが追加された。String
クラスでは、2 つのsplit
メソッドが新しく追加された。 さらに、subSequence
メソッドが追加された (String
が実装するようになったCharSequence
インタフェースで必要)。matches
、replaceAll
、およびreplaceFirst
という 3 つのメソッドが追加された。StringBuffer
クラスでは、subSequence
メソッドが追加された (StringBuffer
が実装するようになったCharSequence
インタフェースで必要)Thread
クラスでは、interrupt
メソッドが、チャネル入出力操作でブロックされるスレッドに割り込めるように改訂されたDatagramSocket
クラスでは、ソケットがチャネルを持ち、そのチャネルが非ブロックモードである場合に、receive
およびsend
メソッドがjava.nio.channels.IllegalBlockingModeException
をスローするように改訂された。 さらに、close
メソッドがソケットのチャネル (ソケットが持っている場合) をクローズするようになり、基本となるチャネル (存在する場合) を返すgetChannel
メソッドが新しく追加されたServerSocket
クラスでは、ソケットがチャネルを持ち、そのチャネルが非ブロックモードである場合に、accept
およびimplAccept
メソッドがjava.nio.IllegalBlockingModeException
をスローするように改訂された。 さらに、getChannel
メソッドが追加され、close
メソッドが改訂された (DatagramSocket
クラスと同じ理由による)Socket
クラスでは、getInputStream
およびgetOutputStream
メソッドが、ソケットがチャネルを持っている場合に、すべての入出力操作をそのチャネルに委譲するように改訂された。 また、ソケットがチャネルを持ち、そのチャネルが非ブロックモードである場合に、connect
がjava.nio.IllegalBlockingModeException
をスローするように改訂された。 さらに、getChannel
メソッドが追加され、close
メソッドが改訂された (DatagramSocket
クラスと同じ理由による)ダイレクトバッファをサポートするために、新しい 3 つの関数が Java Native Interface (JNI) に追加されました。 詳細は、「v1.4 の JNI 拡張機能」を参照してください。
詳細情報
- New I/O: Additional Documentation
- サポートされているエンコーディング
- JSR-51: New I/O APIs for the Java Platform (注: v1.4 には、この仕様要求で提案されている変更のサブセットが含まれています。)
Copyright © 2002 Sun Microsystems, Inc. All Rights Reserved. コメントの送付先: java-io@java.sun.com |
Java ソフトウェア |