public final class FileSystems extends Object
getDefault
メソッドを定義します。
このクラスで定義されているどのメソッドの最初の呼出しでも、デフォルト・プロバイダ
がロードされます。デフォルト・プロバイダ(URIスキーム「file」で識別される)は、Java仮想マシンからアクセス可能なファイル・システムへのアクセスを提供するFileSystem
を作成します。デフォルト・プロバイダのロードまたは初期化の処理が失敗すると、未指定のエラーがスローされます。
このクラスで定義されているnewFileSystem
メソッドの呼出しによるinstalledProviders
メソッドの最初の呼出しでは、インストールされているすべてのファイル・システム・プロバイダの検索とロードが行われます。インストールされているプロバイダのロードには、ServiceLoader
クラスで定義されているサービス・プロバイダのロード機能が使用されます。インストールされているプロバイダのロードにはシステム・クラス・ローダーが使用されます。システム・クラス・ローダーが見つからない場合は拡張クラス・ローダーが使用され、拡張クラス・ローダーが存在しない場合はブートストラップ・クラス・ローダーが使用されます。通常、インストールされるプロバイダはアプリケーション・クラス・パス上のJARファイルまたは拡張ディレクトリ内に配置されます。そのJARファイルのリソース・ディレクトリMETA-INF/services
にはjava.nio.file.spi.FileSystemProvider
というプロバイダ構成ファイルが含まれており、そのファイルには引数なしのコンストラクタを持つFileSystemProvider
の具象サブクラスの1つまたは複数の完全修飾名が一覧表示されます。インストールされているプロバイダの検索順序は実装によって異なります。プロバイダがインスタンス化され、そのgetScheme
によって、以前インスタンス化されたプロバイダと同じURIスキームのプロバイダが返される場合は、最後にインスタンス化された重複するプロバイダが破棄されます。URIスキームは大文字小文字に関係なく比較されます。構築中、プロバイダはデフォルト・プロバイダに関連付けられたファイルに安全にアクセスできますが、インストールされたほかのプロバイダの循環ロードを避けるために注意が必要です。インストールされたプロバイダの循環ロードが検出された場合は、未指定のエラーがスローされます。
このクラスでは、プロバイダの検索時にClassLoader
を指定できるようにするファクトリ・メソッドも定義します。インストールされているプロバイダと同様に、プロバイダ・クラスも、プロバイダ構成ファイルをリソース・ディレクトリMETA-INF/services
内に配置することで識別されます。
あるスレッドがインストールされているファイル・システム・プロバイダのロードを開始しているときに、別のスレッドが同様にそれらのプロバイダのロードを試みるメソッドを呼び出した場合、最初のロードが完了するまでそのメソッドはブロックされます。
修飾子と型 | メソッドと説明 |
---|---|
static FileSystem |
getDefault()
デフォルトの
FileSystem を返します。 |
static FileSystem |
getFileSystem(URI uri)
既存の
FileSystem への参照を返します。 |
static FileSystem |
newFileSystem(Path path, ClassLoader loader)
ファイルの内容にファイル・システムとしてアクセスする新しい
FileSystem を構築します。 |
static FileSystem |
newFileSystem(URI uri, Map<String,?> env)
URI によって識別される新しいファイル・システムを構築します。 |
static FileSystem |
newFileSystem(URI uri, Map<String,?> env, ClassLoader loader)
URI によって識別される新しいファイル・システムを構築します。 |
public static FileSystem getDefault()
FileSystem
を返します。デフォルトのファイル・システムは、Java仮想マシンからアクセス可能なファイル・システムへのアクセスを提供するオブジェクトを作成します。そのファイル・システムの作業ディレクトリは、システム・プロパティuser.dir
によって指定された現在のユーザー・ディレクトリです。これにより、java.io.File
クラスとの相互運用性が確保されます。
このクラスで定義されているどのメソッドの最初の呼出しでも、デフォルト・プロバイダ
・オブジェクトが検索されます。システム・プロパティjava.nio.file.spi.DefaultFileSystemProvider
が定義されていない場合は、デフォルトのファイル・システムを作成するために呼び出されるシステムのデフォルト・プロバイダがデフォルト・プロバイダになります。
システム・プロパティjava.nio.file.spi.DefaultFileSystemProvider
が定義されている場合は、それがURIスキーム"file"
で識別される具象プロバイダ・クラスの1つまたは複数の完全修飾名のリストとみなされます。そのプロパティが複数の名前のリストである場合、それらの名前はカンマで区切られています。各クラスは、システム・クラス・ローダーを使ってロードされ、1つの引数をとるコンストラクタ(その仮パラメータ型はFileSystemProvider
)を呼び出してインスタンス化されます。プロバイダは、そのプロパティに指定されている順序でロードおよびインスタンス化されます。このプロセスが失敗するか、プロバイダのスキームが"file"
に等しくない場合は、未指定のエラーがスローされます。URIスキームは通常、大文字小文字に関係なく比較されますが、このスキームは"file"
である必要があります。最初のプロバイダ・クラスをインスタンス化するには、システムのデフォルト・プロバイダへの参照を使ってそれを呼び出します。2番目のプロバイダ・クラスをインスタンス化するには、最初のプロバイダ・インスタンスへの参照を使ってそれを呼び出します。3番目のプロバイダ・クラスをインスタンス化するには、2番目のプロバイダ・インスタンスへの参照を使ってそれを呼び出し、それ以降も同様です。インスタンス化される最後のプロバイダがデフォルト・プロバイダになります。つまり、そのgetFileSystem
メソッドがURI "file:///"
を使って呼び出されて、デフォルトのファイル・システムへの参照が取得されます。
このメソッドの以降の呼出しでも、最初の呼出しで返されたファイル・システムが返されます。
public static FileSystem getFileSystem(URI uri)
FileSystem
への参照を返します。
このメソッドは、インストールされている
プロバイダを反復して、指定されたURIのURI スキーム
で識別されるプロバイダを検索します。URIスキームは大文字小文字に関係なく比較されます。URIの正確な形式はプロバイダに大きく依存します。見つかった場合は、そのプロバイダのgetFileSystem
メソッドが呼び出されてFileSystem
への参照が取得されます。
このプロバイダによって作成されたファイル・システムが閉じると
、このメソッドが、閉じられたファイル・システムへの参照を返すかFileSystemNotFoundException
をスローするかは、プロバイダによって異なります。以前に作成したファイル・システムと同じURIで新しいファイル・システムを作成することをプロバイダが許可する場合は、ファイル・システムが閉じられたあとで(かつnewFileSystem
メソッドによって新しいインスタンスが作成される前に)このメソッドを呼び出すと、例外がスローされます。
セキュリティ・マネージャがインストールされている場合は、プロバイダ実装は既存のファイル・システムへの参照を返す前にアクセス権をチェックすることを必要とする場合があります。デフォルト
ファイル・システムの場合は、アクセス権のチェックは不要です。
uri
- ファイル・システムを検索するURIIllegalArgumentException
- uri
パラメータの事前条件が満たされない場合FileSystemNotFoundException
- そのファイル・システム(URIによって識別される)が存在しない場合ProviderNotFoundException
- URIスキームをサポートするプロバイダがインストールされていない場合SecurityException
- セキュリティ・マネージャがインストールされ、それが未指定のアクセス権を拒否する場合public static FileSystem newFileSystem(URI uri, Map<String,?> env) throws IOException
URI
によって識別される新しいファイル・システムを構築します。
このメソッドは、インストールされている
プロバイダを反復して、指定されたURIのURI スキーム
で識別されるプロバイダを検索します。URIスキームは大文字小文字に関係なく比較されます。URIの正確な形式はプロバイダに大きく依存します。見つかった場合は、そのプロバイダのnewFileSystem(URI,Map)
メソッドが呼び出されて新しいファイル・システムが構築されます。
ファイル・システムが閉じられると
、以前に作成したファイル・システムと同じURIで新しいファイル・システムを作成することをプロバイダが許可するかどうかはプロバイダによって異なります。
使用例: スキーム"memory"
で識別されるプロバイダがインストールされているとします。
Map<String,String> env = new HashMap<>(); env.put("capacity", "16G"); env.put("blockSize", "4k"); FileSystem fs = FileSystems.newFileSystem(URI.create("memory:///?name=logfs"), env);
uri
- ファイル・システムを識別するURIenv
- ファイル・システムを構成するためのプロバイダ固有のプロパティのマップ。空でも可IllegalArgumentException
- uri
パラメータの事前条件が満たされない場合、またはenv
パラメータにプロバイダが必要とするプロパティが含まれない場合、またはプロパティ値が無効な場合FileSystemAlreadyExistsException
- そのファイル・システムがすでに作成されている場合ProviderNotFoundException
- URIスキームをサポートするプロバイダがインストールされていない場合IOException
- そのファイル・システムの作成時に入出力エラーが発生した場合SecurityException
- セキュリティ・マネージャがインストールされ、それがファイル・システム・プロバイダ実装によって必要とされる未指定のアクセス権を拒否する場合public static FileSystem newFileSystem(URI uri, Map<String,?> env, ClassLoader loader) throws IOException
URI
によって識別される新しいファイル・システムを構築します。
このメソッドは最初に、newFileSystem(URI,Map)
メソッドとまったく同じ方法でインストールされているプロバイダの検索を試みます。インストールされているプロバイダの中にそのURIスキームをサポートするものが1つも存在しない場合は、指定されたクラス・ローダーを使用してプロバイダの検索を試みます。そのURIスキームをサポートするプロバイダが見つかった場合は、そのnewFileSystem(URI,Map)
が呼び出されて、新しいファイル・システムが構築されます。
uri
- ファイル・システムを識別するURIenv
- ファイル・システムを構成するためのプロバイダ固有のプロパティのマップ。空でも可loader
- プロバイダを検索するためのクラス・ローダー。インストールされたプロバイダを検索するのみの場合はnull
IllegalArgumentException
- uri
パラメータの事前条件が満たされない場合、またはenv
パラメータにプロバイダが必要とするプロパティが含まれない場合、またはプロパティ値が無効な場合FileSystemAlreadyExistsException
- URIスキームによって、インストールされているプロバイダが識別されたが、そのファイル・システムがすでに作成されている場合ProviderNotFoundException
- URIスキームをサポートするプロバイダが見つからない場合ServiceConfigurationError
- サービス・プロバイダのロード中にエラーが発生した場合IOException
- そのファイル・システムの作成時に入出力エラーが発生した場合SecurityException
- セキュリティ・マネージャがインストールされ、それがファイル・システム・プロバイダ実装によって必要とされる未指定のアクセス権を拒否する場合public static FileSystem newFileSystem(Path path, ClassLoader loader) throws IOException
FileSystem
を構築します。
このメソッドは、1つまたは複数のファイルの内容がファイル・システムとして扱われる擬似ファイル・システムを作成する特別なプロバイダを使用します。
このメソッドは、インストールされている
プロバイダを反復処理します。順々に、各プロバイダのnewFileSystem(Path,Map)
メソッドを空のマップで呼び出します。プロバイダがファイル・システムを返す場合は、反復処理が終了して、そのファイル・システムが返されます。インストールされているプロバイダの中にそのFileSystem
を返すものが1つも存在しない場合は、指定されたクラス・ローダーを使用してプロバイダの検索を試みます。プロバイダがファイル・システムを返す場合は、検索処理が終了して、そのファイル・システムが返されます。
path
- ファイルへのパスloader
- プロバイダを検索するためのクラス・ローダー。インストールされたプロバイダを検索するのみの場合はnull
ProviderNotFoundException
- このファイル・タイプをサポートするプロバイダが見つからない場合ServiceConfigurationError
- サービス・プロバイダのロード中にエラーが発生した場合IOException
- 入出力エラーが発生した場合SecurityException
- セキュリティ・マネージャがインストールされ、それが未指定のアクセス権を拒否する場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.