Java SE 7 リリースで導入された NIO.2 API は、ファイルシステムオブジェクトを管理するために使用できるカスタムファイルシステムプロバイダを開発する機能を提供します。ファイルシステムは、基本的にファイルシステムオブジェクトと呼ばれる組織化された同種の要素を含むコンテナです。ファイルシステムは、ファイルシステムオブジェクトへのアクセスを提供します。ファイルシステムオブジェクトは、ファイルストア、ファイル、またはディレクトリです。ファイルストアは、ファイルが格納されるボリュームまたはパーティションです。たとえば、Windows プラットフォーム上などのネイティブファイルシステムでは、よく知られている c: や d: などのドライブがファイルストアです。Solaris オペレーティングシステムでは、/ (ルート) およびマウントされたディレクトリがファイルストアと見なされます。
java.nio.file.spi.FileSystemProvider クラスを使用すると、カスタムファイルシステムプロバイダを開発できます。カスタムファイルシステムプロバイダは、次のような状況で使用できます。
java.nio.file.spi.FileSystemProvider クラスの概要カスタムファイルシステムプロバイダは、java.nio.file.spi.FileSystemProvider クラスを実装する必要があります。ファイルシステムプロバイダは、file、jar、memory、cd などの URI スキームによって識別されます。
java.nio.file.spi.FileSystemProvider クラスの実装は、java.nio.file.FileSystem クラスのインスタンスのファクトリです。ファイルシステムの URI には、それを作成したファイルシステムプロバイダの URI スキームと一致する URI スキームが含まれています。
ファイルシステムを作成するには newFileSystem メソッドを使用し、既存のファイルシステムへの参照を取得するには getFileSystem メソッドを使用します。
ここでは、java.nio.file.spi.FileSystemProvider API を使ってカスタムファイルシステムプロバイダを作成するために必要な大まかな手順について説明します。JDK インストールの demo/nio/zipfs に含まれている ZipFileSystemProvider クラスは、カスタムファイルシステムプロバイダの例です。Zip ファイルシステムプロバイダについては、「リソース」を参照してください。
カスタムファイルシステムプロバイダクラスを実装するには、次の操作を実行します。
java.nio.file.spi.FileSystemProvider クラスを拡張するカスタムファイルシステムプロバイダクラス (MyFileSystemProvider など) を作成します。jar など) を定義します。getScheme メソッドは、このプロバイダの URI スキームを返します。newFileSystem メソッドを実装します。このメソッドは、指定されたパスで新しいカスタムファイルシステムを作成し、そのファイルシステムをキャッシュに追加します。指定されたパスにファイルシステムがすでに存在する場合、このメソッドは java.nio.file.FileSystemAlreadyExistsException 例外をスローします。getFileSystem メソッドを実装します。このメソッドはキャッシュを検索し、指定された URI に対応するファイルシステムの以前に作成されたインスタンスを返します。newFileChannel メソッドまたは newAsynchronousFileChannel メソッドを実装します。このメソッドは、ファイルシステムでのファイルの読み書きを可能にする FileChannel オブジェクトを返します。カスタムファイルシステムクラスを実装するには、次の操作を実行します。
java.nio.file.FileSystem クラスを拡張するクラス (MyFileSystem など) を作成します。