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
パッケージの変更点について説明します。