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, 2014, Oracle and/or its affiliates. All rights reserved.