public abstract class FileSystem extends Object implements Closeable
FileSystems.getDefault
メソッドを呼び出して取得されるデフォルトのファイルシステムは、Java 仮想マシンからアクセス可能なファイルシステムへのアクセスを提供します。FileSystems
クラスは、ほかの種類の (カスタム) ファイルシステムへのアクセスを提供するファイルシステムを作成するためのメソッドを定義します。
ファイルシステムは、いくつかの種類のオブジェクトのファクトリです。
getPath
メソッドは、システムに依存するパス文字列を変換して、ファイルの検索とアクセスに使用できる Path
オブジェクトを返します。
getPathMatcher
メソッドは、パスのマッチ操作を実行する PathMatcher
の作成に使用されます。
getFileStores
メソッドは、ベースとなるファイルストア
を処理するイテレータを返します。
getUserPrincipalLookupService
メソッドは、ユーザーまたはグループを名前で検索する UserPrincipalLookupService
を返します。
newWatchService
メソッドは、オブジェクトの変更およびイベントの監視に使用できる WatchService
を作成します。
ファイルシステムはきわめて多種多様です。あるケースでは、ファイルシステムは最上位のルートディレクトリを 1 つ持つ単一のファイル階層になります。別のケースでは、いくつかの異なるファイル階層を保有し、それぞれの階層に独自の最上位のルートディレクトリがあります。getRootDirectories
メソッドを使用すると、ファイルシステム内のルートディレクトリを反復処理できます。ファイルシステムは通常、ファイル用のストレージを提供する 1 つまたは複数のベースとなるファイルストア
で構成されます。これらのファイルストアはサポートしている機能、およびファイルに関連付けるファイル属性やメタデータにもさまざまな違いがある可能性があります。
ファイルシステムは、作成時には開いていて、その close
メソッドを呼び出して閉じることができます。いったん閉じたあとで、そのファイルシステム内のオブジェクトにアクセスしようとすると、ClosedFileSystemException
がスローされます。デフォルトプロバイダ
によって作成されたファイルシステムを閉じることはできません。
FileSystem
は、ファイルシステムへの読み取り専用または読み取り/書き込みアクセスを提供できます。ファイルシステムが読み取り専用アクセスを提供するかどうかは、FileSystem
の作成時に設定され、その isReadOnly
メソッドを呼び出すことで確認できます。読み取り専用のファイルシステムに関連付けられたオブジェクトを使ってファイルストアへの書き込みを試みると、ReadOnlyFileSystemException
がスローされます。
ファイルシステムは、複数の並行スレッドで安全に使用できます。いつでも close
メソッドを呼び出してファイルシステムを閉じることができますが、ファイルシステムが非同期クローズ可能であるかどうかはプロバイダ固有のものであるため、未指定です。つまり、あるスレッドがファイルシステム内のオブジェクトにアクセスしているときに、別のスレッドが close
メソッドを呼び出した場合、最初の操作が完了するまでそのメソッドはブロックされる必要があることがあります。ファイルシステムを閉じると、ファイルシステムに関連付けられた開いているチャネル、監視サービス、およびその他のクローズ可能な
オブジェクトがすべて閉じます。
修飾子 | コンストラクタと説明 |
---|---|
protected |
FileSystem()
このクラスの新しいインスタンスを初期化します。
|
修飾子と型 | メソッドと説明 |
---|---|
abstract void |
close()
このファイルシステムを閉じます。
|
abstract Iterable<FileStore> |
getFileStores()
ベースとなるファイルストアを反復するためのオブジェクトを返します。
|
abstract Path |
getPath(String first, String... more)
1 つのパス文字列または、連結すると 1 つのパス文字列を形成する文字列のシーケンスを、
Path に変換します。 |
abstract PathMatcher |
getPathMatcher(String syntaxAndPattern)
|
abstract Iterable<Path> |
getRootDirectories()
ルートディレクトリのパスを反復するためのオブジェクトを返します。
|
abstract String |
getSeparator()
文字列として表された名前区切り文字を返します。
|
abstract UserPrincipalLookupService |
getUserPrincipalLookupService()
このファイルシステムの
UserPrincipalLookupService を返します (オプションの操作)。 |
abstract boolean |
isOpen()
このファイルシステムが開いているかどうかを判断します。
|
abstract boolean |
isReadOnly()
このファイルシステムが、ファイルストアに対する読み取り専用アクセスのみを許可するかどうかを判断します。
|
abstract WatchService |
newWatchService()
新しい
WatchService を構築します (オプションの操作)。 |
abstract FileSystemProvider |
provider()
このファイルシステムの作成元プロバイダを返します。
|
abstract Set<String> |
supportedFileAttributeViews()
この
FileSystem によってサポートされるファイル属性ビューの名前 のセットを返します。 |
public abstract FileSystemProvider provider()
public abstract void close() throws IOException
ファイルシステムが閉じたあとは、このクラスで定義されたメソッドによる、またはこのファイルシステムに関連付けられたオブジェクトに対する、ファイルシステムへの後続のすべてのアクセスで ClosedFileSystemException
がスローされます。ファイルシステムがすでに閉じている場合は、このメソッドを呼び出しても何の効果もありません。
ファイルシステムを閉じると、このファイルシステムに関連付けられた開いているチャネル
、ディレクトリストリーム
、監視サービス
、およびその他のクローズ可能なオブジェクトがすべて閉じます。デフォルト
のファイルシステムを閉じることはできません。
close
、インタフェース: Closeable
close
、インタフェース: AutoCloseable
IOException
- 入出力エラーが発生した場合UnsupportedOperationException
- デフォルトのファイルシステムの場合にスローされるpublic abstract boolean isOpen()
デフォルトプロバイダによって作成されたファイルシステムは常に開いています。
true
public abstract boolean isReadOnly()
true
public abstract String getSeparator()
名前区切り文字は、パス文字列内の名前を区切るために使用されます。実装では複数の名前区切り文字をサポートしていることがありますが、その場合、このメソッドは実装固有のデフォルトの名前区切り文字を返します。この区切り文字は、toString()
メソッドの呼び出しによってパス文字列を作成するときに使用されます。
デフォルトプロバイダの場合、このメソッドは File.separator
と同じ区切り文字を返します。
public abstract Iterable<Path> getRootDirectories()
ファイルシステムは、いくつかの異なるファイル階層 (それぞれに独自の最上位のルートディレクトリがある) で構成されている可能性のあるファイルストアへのアクセスを提供します。セキュリティーマネージャーによって拒否されないかぎり、返されるイテレータの各要素は個別のファイル階層のルートディレクトリに対応します。要素の順番は定義されていません。ファイル階層は、Java 仮想マシンの有効期間中に変更される可能性があります。たとえば、一部の実装では、リムーバブルメディアの挿入によって独自の最上位ディレクトリを持つ新しいファイル階層が作成されることがあります。
セキュリティーマネージャーがインストールされている場合は、各ルートディレクトリへのアクセスをチェックするためにそれが呼び出されます。拒否された場合、そのルートディレクトリはイテレータによって返されません。デフォルトプロバイダの場合は、SecurityManager.checkRead(String)
メソッドが呼び出されて各ルートディレクトリへの読み取りアクセスがチェックされます。イテレータの取得時または反復中にアクセス権のチェックが行われるかどうかはシステムに依存します。
public abstract Iterable<FileStore> getFileStores()
返されるイテレータの要素は、このファイルシステムの FileStores
です。それらの要素の順番は定義されておらず、ファイルストアは Java 仮想マシンの有効期間中に変更される可能性があります。ファイルストアにアクセスできないなどの理由で入出力エラーが発生した場合、それはイテレータによって返されません。
デフォルトプロバイダで、セキュリティーマネージャーがインストールされている場合は、そのセキュリティーマネージャーが呼び出されて RuntimePermission
(「getFileStoreAttributes」) がチェックされます。拒否された場合、イテレータによって返されるファイルストアはありません。さらに、セキュリティーマネージャーの SecurityManager.checkRead(String)
メソッドが呼び出されて、ファイルストアの最上位ディレクトリへの読み取りアクセスがチェックされます。拒否された場合、そのファイルストアはイテレータによって返されません。イテレータの取得時または反復中にアクセス権のチェックが行われるかどうかはシステムに依存します。
使用例: すべてのファイルストアの領域使用量を出力するとします。
for (FileStore store: FileSystems.getDefault().getFileStores()) { long total = store.getTotalSpace() / 1024; long used = (store.getTotalSpace() - store.getUnallocatedSpace()) / 1024; long avail = store.getUsableSpace() / 1024; System.out.format("%-20s %12d %12d %12d%n", store, total, used, avail); }
public abstract Set<String> supportedFileAttributeViews()
FileSystem
によってサポートされるファイル属性ビューの名前
のセットを返します。
BasicFileAttributeView
はサポートされる必要があるため、そのセットには少なくとも 1 つの要素「basic」が含まれています。
supportsFileAttributeView(String)
メソッドを使用すると、ベースとなる FileStore
が、ファイル属性ビューで識別されるファイル属性をサポートするかどうかを判定できます。
public abstract Path getPath(String first, String... more)
Path
に変換します。more
に要素が指定されていない場合は、first
パラメータの値は変換するパス文字列です。more
に 1 つ以上の要素が指定されている場合は、空でない各文字列 (first
を含む) は名前要素のシーケンスであるとみなされ (Path
を参照)、結合されてパス文字列に形成されます。文字列の結合方法の詳細はプロバイダ固有ですが、通常は名前区切り文字
を区切り文字として使用して結合されます。たとえば、名前区切り文字が "/
" で getPath("/foo","bar","gus")
が呼び出された場合、パス文字列 "/foo/bar/gus"
は Path
に変換されます。first
が空の文字列で more
に空でない文字列が含まれない場合は、空のパスを示す Path
が返されます。
パスオブジェクトの解析および変換は、本質的に実装に依存しています。もっとも単純なケースでは、ファイルストアにとって有効な文字に変換できない文字がパス文字列に含まれている場合、そのパス文字列は拒否され、InvalidPathException
がスローされます。たとえば、UNIX システムでは、NUL (\u0000) 文字をパス内に指定することは許可されません。実装では、どのファイルストアでも許可される名前よりも長い名前を含むパス文字列を拒否することもでき、複雑なパス構文を実装でサポートしている場合は、不正な形式のパス文字列を拒否することもできます。
デフォルトプロバイダの場合は、プラットフォームまたは仮想ファイルシステムレベルのパスの定義に基づいてパス文字列が解析されます。たとえば、オペレーティングシステムではファイル名に特定の文字を指定することを許可しない場合がありますが、ベースとなる特定のファイルストアで、正当な文字セットに対して異なる制限または追加の制限を設けることができます。
このメソッドは、パス文字列をパスに変換できない場合に InvalidPathException
をスローします。可能な場合、かつ適切な場合は、パス文字列が拒否される原因となった、path
パラメータ内の最初の位置を示すインデックス
値でその例外が作成されます。
first
- パス文字列またはパス文字列の最初の部分more
- 結合してパス文字列を形成するための追加文字列Path
InvalidPathException
- パス文字列を変換できない場合public abstract PathMatcher getPathMatcher(String syntaxAndPattern)
Path
オブジェクトの String
表現に対するマッチ操作を実行する PathMatcher
を返します。
syntaxAndPattern
パラメータは、構文とパターンを識別し、次の形式をとります。
ここでのsyntax:pattern
':'
はそれ自体を表します。
FileSystem
実装では、「glob
」および「regex
」構文をサポートしますが、その他をサポートすることもできます。構文コンポーネントの値は大文字小文字に関係なく比較されます。
構文が「glob
」の場合、パスの String
表現のマッチングには、正規表現に似ているが、より単純な構文を持つ制限されたパターン言語が使用されます。たとえば、
*.java
.java
で終わるファイル名を表すパスに一致します*.*
ドットを含むファイル名に一致します *.{java,class}
.java
または.class
で終わるファイル名に一致しますfoo.?
foo.
と 1 文字の拡張子で始まるファイル名に一致します/home/*/* UNIX プラットフォームでの /home/gus/data に一致します /home/** UNIX プラットフォームでの /home/gus や /home/gus/data に一致します C:\\* Windows プラットフォームでの C:\foo や C:\bar に一致します (バックスラッシュがエスケープされている。Java 言語のリテラル文字列としてのパターンは "C:\\\\*" になる)
glob パターンの解釈には次の規則が使用されます。
**
文字は、ディレクトリ境界を越える 0 個以上の文字
に一致します。
?
文字は、厳密に 1 文字の名前コンポーネントに一致します。
バックスラッシュ文字 (\
) は、そうしない場合は特殊文字として解釈される文字をエスケープするために使用されます。たとえば、式 \\
は 1 つのバックスラッシュに一致し、「\{」は左括弧に一致します。
[ ]
文字は、一連の文字のうち、1 文字の名前コンポーネントに一致する括弧式です。たとえば、[abc]
は "a"
、"b"
、または "c"
に一致します。ハイフン (-
) は範囲を指定するために使用できるため、[a-z]
は "a"
から "z"
まで (a と z を含む) に一致する範囲を指定します。これらの形式は組み合わせることができるため、[abce-g] は "a"
、"b"
、"c"
、"e"
、"f"
、または "g"
に一致します。[
のあとの文字が !
の場合、それは否定に使用されるため、[!a-c]
は "a"
、"b"
、または "c"
を除くすべての文字に一致します。
括弧式の内側では、*
、?
、および \
文字はそれ自体に一致します。(-
) 文字は、それが括弧内の最初の文字である場合、または !
のあとの最初の文字である場合 (否定の場合) は、それ自体に一致します。
{ }
文字はサブパターンのグループであり、そのグループ内のサブパターンが一致すればグループは一致します。","
文字はサブパターンを区切るために使用されます。グループを入れ子にすることはできません。
ファイル名の先頭のピリオド/ドット文字は、マッチ操作で正規文字とみなされます。たとえば、glob パターン "*"
はファイル名 ".login"
に一致します。Files.isHidden(java.nio.file.Path)
メソッドを使用すると、ファイルが隠しファイルとみなされるかどうかを判定できます。
ほかのすべての文字は実装に依存した方法でそれ自体に一致します。これには、名前区切り文字
を表す文字も含まれます。
ルート
コンポーネントのマッチングは、実装に大きく依存するため、未指定です。
構文が「regex
」である場合は、Pattern
クラスで定義されているように、パターンコンポーネントは正規表現になります。
glob および regex 構文のどちらの場合も、マッチングの詳細 (マッチングに大文字小文字の区別があるかどうかなど) は実装に依存しているため、未指定です。
syntaxAndPattern
- 構文とパターンIllegalArgumentException
- パラメータが syntax:pattern
の形式を取らない場合PatternSyntaxException
- パターンが無効な場合UnsupportedOperationException
- パターンの構文が実装で認識されていない場合Files.newDirectoryStream(Path,String)
public abstract UserPrincipalLookupService getUserPrincipalLookupService()
UserPrincipalLookupService
を返します (オプションの操作)。結果となる検索サービスを使用すると、ユーザー名またはグループ名を検索できます。
使用例: "joe" をファイルの所有者にするとします。
UserPrincipalLookupService lookupService = FileSystems.getDefault().getUserPrincipalLookupService(); Files.setOwner(path, lookupService.lookupPrincipalByName("joe"));
UserPrincipalLookupService
UnsupportedOperationException
- この FileSystem
が検索サービスを備えていない場合public abstract WatchService newWatchService() throws IOException
WatchService
を構築します (オプションの操作)。
このメソッドは、登録されたオブジェクトの変更およびイベントの監視に使用できる新しい監視サービスを構築します。
UnsupportedOperationException
- この FileSystem
がファイルシステムオブジェクトの変更およびイベントの監視をサポートしない場合。この例外は、デフォルトプロバイダによって作成された FileSystems
からはスローされません。IOException
- 入出力エラーが発生した場合 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.