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
など) を作成します。