- java.lang.Object
-
- java.nio.file.FileSystems
-
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内に配置することで識別されます。あるスレッドがインストールされているファイル・システム・プロバイダのロードを開始しているときに、別のスレッドが同様にそれらのプロバイダのロードを試みるメソッドを呼び出した場合、最初のロードが完了するまでそのメソッドはブロックされます。
- 導入されたバージョン:
- 1.7
-
-
メソッドのサマリー
すべてのメソッド staticメソッド 具象メソッド 修飾子と型 メソッド 説明 static FileSystemgetDefault()デフォルトのFileSystemを返します。static FileSystemgetFileSystem(URI uri)既存のFileSystemへの参照を返します。static FileSystemnewFileSystem(URI uri, Map<String,?> env)URIによって識別される新しいファイル・システムを構築します。static FileSystemnewFileSystem(URI uri, Map<String,?> env, ClassLoader loader)URIによって識別される新しいファイル・システムを構築します。static FileSystemnewFileSystem(Path path, ClassLoader loader)ファイルの内容にファイル・システムとしてアクセスする新しいFileSystemを構築します。
-
-
-
メソッドの詳細
-
getDefault
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:///"を使って呼び出されて、デフォルトのファイル・システムへの参照が取得されます。このメソッドの以降の呼出しでも、最初の呼出しで返されたファイル・システムが返されます。
- 戻り値:
- デフォルトのファイル・システム
-
getFileSystem
public static FileSystem getFileSystem(URI uri)
既存のFileSystemへの参照を返します。このメソッドは、
インストールされているプロバイダを反復して、指定されたURIのURIスキームで識別されるプロバイダを検索します。 URIスキームは大文字小文字に関係なく比較されます。 URIの正確な形式はプロバイダに大きく依存します。 見つかった場合は、そのプロバイダのgetFileSystemメソッドが呼び出されてFileSystemへの参照が取得されます。このプロバイダによって作成されたファイル・システムが
閉じると、このメソッドが、閉じられたファイル・システムへの参照を返すかFileSystemNotFoundExceptionをスローするかは、プロバイダによって異なります。 以前に作成したファイル・システムと同じURIで新しいファイル・システムを作成することをプロバイダが許可する場合は、ファイル・システムが閉じられたあとで(かつnewFileSystemメソッドによって新しいインスタンスが作成される前に)このメソッドを呼び出すと、例外がスローされます。セキュリティ・マネージャがインストールされている場合は、プロバイダ実装は既存のファイル・システムへの参照を返す前にアクセス権をチェックすることを必要とする場合があります。
デフォルト・ファイル・システムの場合は、アクセス権のチェックは不要です。- パラメータ:
uri- ファイル・システムを検索するURI- 戻り値:
- ファイル・システムへの参照
- 例外:
IllegalArgumentException-uriパラメータの事前条件が満たされない場合FileSystemNotFoundException- そのファイル・システム(URIによって識別される)が存在しない場合ProviderNotFoundException- URIスキームをサポートするプロバイダがインストールされていない場合SecurityException- セキュリティ・マネージャがインストールされ、それが未指定のアクセス権を拒否する場合
-
newFileSystem
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- セキュリティ・マネージャがインストールされ、それがファイル・システム・プロバイダ実装によって必要とされる未指定のアクセス権を拒否する場合
-
newFileSystem
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- セキュリティ・マネージャがインストールされ、それがファイル・システム・プロバイダ実装によって必要とされる未指定のアクセス権を拒否する場合
-
newFileSystem
public static FileSystem newFileSystem(Path path, ClassLoader loader) throws IOException
ファイルの内容にファイル・システムとしてアクセスする新しいFileSystemを構築します。このメソッドは、1つまたは複数のファイルの内容がファイル・システムとして扱われる擬似ファイル・システムを作成する特別なプロバイダを使用します。
このメソッドは、
インストールされているプロバイダを反復処理します。 順々に、各プロバイダのnewFileSystem(Path,Map)メソッドを空のマップで呼び出します。 プロバイダがファイル・システムを返す場合は、反復処理が終了して、そのファイル・システムが返されます。 インストールされているプロバイダの中にそのFileSystemを返すものが1つも存在しない場合は、指定されたクラス・ローダーを使用してプロバイダの検索を試みます。 プロバイダがファイル・システムを返す場合は、検索処理が終了して、そのファイル・システムが返されます。- パラメータ:
path- ファイルへのパスloader- プロバイダを検索するためのクラス・ローダー。インストールされたプロバイダを検索するのみの場合はnull- 戻り値:
- 新しいファイル・システム
- 例外:
ProviderNotFoundException- このファイル・タイプをサポートするプロバイダが見つからない場合ServiceConfigurationError- サービス・プロバイダのロード中にエラーが発生した場合IOException- 入出力エラーが発生した場合SecurityException- セキュリティ・マネージャがインストールされ、それが未指定のアクセス権を拒否する場合
-
-