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