java.nio.file パッケージ、およびその関連パッケージである java.nio.file.attribute は、ファイルの入出力とファイルシステムへのアクセスを包括的にサポートします。JDK 7 では、Zip ファイルシステムプロバイダも使用できます。詳細は、次のリソースを参照してください。
<Java home>/sample/nio/chatserver/ には、java.nio.file パッケージに含まれる新しい API の例を示すサンプルが格納されています<Java home>/demo/nio/zipfs/ には、NIO.2 NFS (Network File System) ファイルシステムの例を示すサンプルが格納されていますさらに、次の拡張機能が導入されています。
分野: NIO
標準/プラットフォーム: JDK 7
概要: JDK 7 リリースより前では、java.nio.ByteBuffer.allocateDirect(int) を使って割り当てられたダイレクトバッファーがページの境界上に配置されていました。JDK 7 では実装が変更され、ダイレクトバッファーがページの境界上に配置されないようになりました。これにより、小さいバッファーを数多く作成するアプリケーションに必要なメモリー量が削減されます。これまでドキュメント化されていない配置に依存していたアプリケーションは、コマンド行オプション -XX:+PageAlignDirectMemory を使って実行すると、以前の動作に戻すことができます。
RFE: 4837564
次の新しいクラスが 1 つ追加されました。
Console - 文字ベースのコンソールデバイスにアクセスするメソッドが含まれます。readPassword() メソッドは、エコーを無効にすることから、パスワードのような機密データの取得に適しています。System.console() メソッドは、Java 仮想マシンと関係のある一意のコンソールを返します。次の新しいメソッドが File に追加されました。
getTotalSpace() はパーティションの容量をバイト数で返しますgetFreeSpace() はパーティションの空き容量をバイト数で返しますgetUsableSpace() は、パーティションで使用可能なバイト数を返すほか、書き込み権限とほかのオペレーティングシステムの制限についてチェックします setWritable(boolean writable, boolean ownerOnly) と setWritable(boolean writable) は所有者または全員の書き込み権限を設定します setReadable(boolean readable, boolean ownerOnly) と setReadable(boolean readable) は所有者または全員の読み取り権限を設定します setExecutable(boolean executable, boolean ownerOnly) と setExecutable(boolean executable) は所有者または全員の実行権限を設定しますcanExecute() は実行権限の値をテストします次のクラスにコンストラクタが追加されました。
IOException は、新しいコンストラクタ IOException(String, Throwable) と IOException(Throwable) の追加により、例外チェーンをサポートします。次のメソッドの動作が変更されました。
false を返すように、File.isFile() の Windows 実装が変更されました。以前の戻り値は true で、それが Unix で使用するデバイスの動作と整合していないことから、対象ユーザーはこれをバグと見なしていました。java.nio.channels.SelectorProvider 実装が新たに追加されました。この epoll 機能は Linux 2.6 以降のカーネルで使用できます。Selector に多数の SelectableChannel が登録されている場合、新しい epoll ベースの SelectorProvider 実装は、従来の poll ベースの SelectorProvider 実装よりもスケーラブルです。新しい SelectorProvider 実装は、2.6 カーネルが検出されると、デフォルトで使用されます。poll ベースの SelectorProvider は、2.6 より前のカーネルが検出されると使用されます。sun.nio.ch.disableSystemWideOverlappingFileLockCheck は、FileChannel のほかのインスタンスによって領域がロックされるかどうかを java.nio.channels.FileChannel.lock() がチェックするかどうかを制御します。このシステムプロパティーが true に設定されていないかぎり、アプリケーションが FileChannel の別のインスタンスによってロックされた領域と重複する領域をロックしようとすると、FileChannel.lock() は OverlappingFileLockException をスローします。システムプロパティーが存在するのは、JVM 全体の重複ファイルロックチェックを実装していない以前のリリースとの互換性を提供するためです。javax.net.ssl.SSLEngine が追加されました。J2SDK v1.4.0 での既存の安全な通信インフラストラクチャーである javax.net.ssl.SSLSocket は、java.net.Socket の I/O モデルをベースとしています。SSLEngine クラスは I/O モデルを無視しているため、開発者は代替の I/O を使用して通信経路を保護できます。SSLEngine は New I/O API と組み合わせて、安全なブロックまたは非ブロック SocketChannel などの実装を作成できます。詳細は、「JSSE リファレンスガイド」を参照してください。FileInputStream および FileOutputStream クラスでは、ベースとなる FileChannel オブジェクトを返す getChannel メソッドが追加され、close メソッドはベースとなるチャネルをクローズするように改訂されました。RandomAccessFile クラスでは、getChannel メソッドが追加され、close メソッドはベースとなるチャネルをクローズするように改訂されました。RandomAccessFile コンストラクタが、モード文字「s」と「d」をサポートするようになり、ファイルを開くときに、同期書き込みまたは同期データ書き込みを指定できるようになりました。InputStreamReader および OutputStreamWriter クラスでは、ストリームと Charset オブジェクトを引数に取るコンストラクタが追加され、getEncoding メソッドが、使用されているエンコーディングの互換名を返すように改訂されました。既存の CharsetDecoder オブジェクトを取る InputStreamReader のコンストラクタと、既存の CharsetEncoder オブジェクトを取る OutputStreamWriter のコンストラクタが追加されました。java.io.File クラスの変更点について説明します。java.io パッケージの変更点について説明します。