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
メソッドによって新しいインスタンスが作成される前に) このメソッドを呼び出すと、例外がスローされます。
セキュリティーマネージャーがインストールされている場合は、プロバイダ実装は既存のファイルシステムへの参照を返す前にアクセス権をチェックすることを必要とする場合があります。デフォルト
ファイルシステムの場合は、アクセス権のチェックは不要です。
IllegalArgumentException
- 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, 2013, Oracle and/or its affiliates. All rights reserved.