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