クラスFileSystems
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 FileSystemデフォルトの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) ファイルの内容にファイル・システムとしてアクセスする新しいFileSystemを構築します。static FileSystemnewFileSystem(Path path, ClassLoader loader) ファイルの内容にファイル・システムとしてアクセスする新しいFileSystemを構築します。static FileSystemnewFileSystem(Path path, Map<String, ?> env) ファイルの内容にファイル・システムとしてアクセスする新しいFileSystemを構築します。static FileSystemnewFileSystem(Path path, Map<String, ?> env, 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スキームをサポートするプロバイダがインストールされていない場合
-
newFileSystem
public static FileSystem newFileSystem(URI uri, Map<String, ?> env) throws IOExceptionURIによって識別される新しいファイル・システムを構築します。このメソッドは、
インストールされているプロバイダを反復して、指定されたURIのURIスキームで識別されるプロバイダを検索します。 URIスキームは大文字小文字に関係なく比較されます。 URIの正確な形式はプロバイダに大きく依存します。 見つかった場合は、そのプロバイダのnewFileSystem(URI,Map)メソッドが呼び出されて新しいファイル・システムが構築されます。ファイル・システムが
閉じられると、以前に作成したファイル・システムと同じURIで新しいファイル・システムを作成することをプロバイダが許可するかどうかはプロバイダによって異なります。使用例: スキーム
"memory"で識別されるプロバイダがインストールされているとします。FileSystem fs = FileSystems.newFileSystem(URI.create("memory:///?name=logfs"), Map.of("capacity", "16G", "blockSize", "4k"));- パラメータ:
uri- ファイル・システムを識別するURIenv- ファイル・システムを構成するためのプロバイダ固有のプロパティのマップ。空でも可- 戻り値:
- 新しいファイル・システム
- スロー:
IllegalArgumentException-uriパラメータの事前条件が満たされない場合、またはenvパラメータにプロバイダが必要とするプロパティが含まれない場合、またはプロパティ値が無効な場合FileSystemAlreadyExistsException- そのファイル・システムがすでに作成されている場合ProviderNotFoundException- URIスキームをサポートするプロバイダがインストールされていない場合IOException- そのファイル・システムの作成時に入出力エラーが発生した場合
-
newFileSystem
public static FileSystem newFileSystem(URI uri, Map<String, ?> env, ClassLoader loader) throws IOExceptionURIによって識別される新しいファイル・システムを構築します。このメソッドは最初に、
newFileSystem(URI,Map)メソッドとまったく同じ方法でインストールされているプロバイダの検索を試みます。 インストールされているプロバイダの中にそのURIスキームをサポートするものが1つも存在しない場合は、指定されたクラス・ローダーを使用してプロバイダの検索を試みます。 そのURIスキームをサポートするプロバイダが見つかった場合は、そのnewFileSystem(URI,Map)が呼び出されて、新しいファイル・システムが構築されます。- パラメータ:
uri- ファイル・システムを識別するURIenv- ファイル・システムを構成するためのプロバイダ固有のプロパティのマップ。空でも可loader- プロバイダを検索するためのクラス・ローダー。インストールされたプロバイダを検索するのみの場合はnull- 戻り値:
- 新しいファイル・システム
- スロー:
IllegalArgumentException-uriパラメータの事前条件が満たされない場合、またはenvパラメータにプロバイダが必要とするプロパティが含まれない場合、またはプロパティ値が無効な場合FileSystemAlreadyExistsException- URIスキームによって、インストールされているプロバイダが識別されたが、そのファイル・システムがすでに作成されている場合ProviderNotFoundException- URIスキームをサポートするプロバイダが見つからない場合ServiceConfigurationError- サービス・プロバイダのロード中にエラーが発生した場合IOException- そのファイル・システムの作成時に入出力エラーが発生した場合
-
newFileSystem
public static FileSystem newFileSystem(Path path, ClassLoader loader) throws IOException ファイルの内容にファイル・システムとしてアクセスする新しいFileSystemを構築します。このメソッドは、1つまたは複数のファイルの内容がファイル・システムとして扱われる擬似ファイル・システムを作成する特別なプロバイダを使用します。
このメソッドは、空のマップを持つ
newFileSystem(Path, Map, ClassLoader)メソッドとまったく同じ方法で、インストールされているプロバイダの検索を最初に試みます。 インストールされているプロバイダの中にそのFileSystemを返すものが1つも存在しない場合は、指定されたクラス・ローダーを使用してプロバイダの検索を試みます。 プロバイダがファイル・システムを返す場合は、検索処理が終了して、そのファイル・システムが返されます。- パラメータ:
path- ファイルへのパスloader- プロバイダを検索するためのクラス・ローダー。インストールされたプロバイダを検索するのみの場合はnull- 戻り値:
- 新しいファイル・システム
- スロー:
ProviderNotFoundException- このファイル・タイプをサポートするプロバイダが見つからない場合ServiceConfigurationError- サービス・プロバイダのロード中にエラーが発生した場合IOException- 入出力エラーが発生した場合
-
newFileSystem
public static FileSystem newFileSystem(Path path, Map<String, ?> env) throws IOExceptionファイルの内容にファイル・システムとしてアクセスする新しいFileSystemを構築します。このメソッドは、1つまたは複数のファイルの内容がファイル・システムとして扱われる擬似ファイル・システムを作成する特別なプロバイダを使用します。
このメソッドは、最初に、インストールされているプロバイダを
newFileSystem(Path, Map, ClassLoader)メソッドとまったく同じ方法で検出しようとします。 検出されると、新しいファイル・システムを構築するためにプロバイダnewFileSystem(Path, Map)メソッドが呼び出されます。- パラメータ:
path- ファイルへのパスenv- ファイル・システムを構成するためのプロバイダ固有のプロパティのマップ。空でも可- 戻り値:
- 新しいファイル・システム
- スロー:
ProviderNotFoundException- このファイル・タイプをサポートするプロバイダが見つからない場合ServiceConfigurationError- サービス・プロバイダのロード中にエラーが発生した場合IOException- 入出力エラーが発生した場合- 導入されたバージョン:
- 13
-
newFileSystem
public static FileSystem newFileSystem(Path path) throws IOException ファイルの内容にファイル・システムとしてアクセスする新しいFileSystemを構築します。このメソッドは、1つまたは複数のファイルの内容がファイル・システムとして扱われる擬似ファイル・システムを作成する特別なプロバイダを使用します。
このメソッドは、最初に、インストールされているプロバイダを
newFileSystem(Path, Map, ClassLoader)メソッドとまったく同じ方法で検出しようとします。 見つかった場合、新しいファイル・システムを構築するための空のマップを使用してプロバイダnewFileSystem(Path, Map)メソッドが呼び出されます。- パラメータ:
path- ファイルへのパス- 戻り値:
- 新しいファイル・システム
- スロー:
ProviderNotFoundException- このファイル・タイプをサポートするプロバイダが見つからない場合ServiceConfigurationError- サービス・プロバイダのロード中にエラーが発生した場合IOException- 入出力エラーが発生した場合- 導入されたバージョン:
- 13
-
newFileSystem
public static FileSystem newFileSystem(Path path, Map<String, ?> env, ClassLoader loader) throws IOExceptionファイルの内容にファイル・システムとしてアクセスする新しいFileSystemを構築します。このメソッドは、1つまたは複数のファイルの内容がファイル・システムとして扱われる擬似ファイル・システムを作成する特別なプロバイダを使用します。
このメソッドは、
インストールされているプロバイダを反復処理します。 このメソッドは、各プロバイダnewFileSystem(Path,Map)メソッドを呼び出します。 プロバイダがファイル・システムを返す場合は、反復処理が終了して、そのファイル・システムが返されます。 インストールされているプロバイダの中にそのFileSystemを返すものが1つも存在しない場合は、指定されたクラス・ローダーを使用してプロバイダの検索を試みます。 プロバイダからファイル・システムが返されると、ルックアップは終了し、ファイル・システムが返されます。- パラメータ:
path- ファイルへのパスenv- ファイル・システムを構成するためのプロバイダ固有のプロパティのマップ。空でも可loader- プロバイダを検索するためのクラス・ローダー。インストールされたプロバイダを検索するのみの場合はnull- 戻り値:
- 新しいファイル・システム
- スロー:
ProviderNotFoundException- このファイル・タイプをサポートするプロバイダが見つからない場合ServiceConfigurationError- サービス・プロバイダのロード中にエラーが発生した場合IOException- 入出力エラーが発生した場合- 導入されたバージョン:
- 13
-