- すべての実装されたインタフェース:
Closeable
,AutoCloseable
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
メソッドを呼び出した場合、最初の操作が完了するまでそのメソッドはブロックされる必要があることがあります。 ファイル・システムを閉じると、ファイル・システムに関連付けられた開いているチャネル、監視サービス、およびその他のクローズ可能な
オブジェクトがすべて閉じます。
- 導入されたバージョン:
- 1.7
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 protected
FileSystem()
このクラスの新しいインスタンスを初期化します。 -
メソッドのサマリー
修飾子と型 メソッド 説明 abstract void
close()
このファイル・システムを閉じます。abstract Iterable<FileStore>
getFileStores()
ベースとなるファイル・ストアを反復するためのオブジェクトを返します。abstract Path
getPath(String first, String... more)
1つのパス文字列または、連結すると1つのパス文字列を形成する文字列のシーケンスを、Path
に変換します。abstract PathMatcher
getPathMatcher(String syntaxAndPattern)
指定されたパターンを解釈することにより、Path
オブジェクトのString
表現に対するマッチ操作を実行するPathMatcher
を返します。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
によってサポートされるファイル属性ビューの名前
のセットを返します。
-
コンストラクタの詳細
-
FileSystem
protected FileSystem()このクラスの新しいインスタンスを初期化します。
-
-
メソッドの詳細
-
provider
public abstract FileSystemProvider provider()このファイル・システムの作成元プロバイダを返します。- 戻り値:
- このファイル・システムの作成元プロバイダ。
-
close
public abstract void close() throws IOExceptionこのファイル・システムを閉じます。ファイル・システムが閉じたあとは、このクラスで定義されたメソッドによる、またはこのファイル・システムに関連付けられたオブジェクトに対する、ファイル・システムへの後続のすべてのアクセスで
ClosedFileSystemException
がスローされます。 ファイル・システムがすでに閉じている場合は、このメソッドを呼び出しても何の効果もありません。ファイル・システムを閉じると、このファイル・システムに関連付けられた開いている
チャネル
、ディレクトリ・ストリーム
、監視サービス
、およびその他のクローズ可能なオブジェクトがすべて閉じます。デフォルト
のファイル・システムを閉じることはできません。- 定義:
close
、インタフェース:AutoCloseable
- 定義:
close
、インタフェース:Closeable
- 例外:
IOException
- 入出力エラーが発生した場合UnsupportedOperationException
- デフォルトのファイル・システムの場合にスローされる
-
isOpen
public abstract boolean isOpen()このファイル・システムが開いているかどうかを判断します。デフォルト・プロバイダによって作成されたファイル・システムは常に開いています。
- 戻り値:
- このファイル・システムが開いている場合にかぎり
true
-
isReadOnly
public abstract boolean isReadOnly()このファイル・システムが、ファイル・ストアに対する読取り専用アクセスのみを許可するかどうかを判断します。- 戻り値:
- このファイル・システムが読取り専用アクセスを提供する場合にかぎり
true
-
getSeparator
public abstract String getSeparator()文字列として表された名前区切り文字を返します。名前区切り文字は、パス文字列内の名前を区切るために使用されます。 実装では複数の名前区切り文字をサポートしていることがありますが、その場合、このメソッドは実装固有のデフォルトの名前区切り文字を返します。 この区切り文字は、
toString()
メソッドの呼出しによってパス文字列を作成するときに使用されます。デフォルト・プロバイダの場合、このメソッドは
File.separator
と同じ区切り文字を返します。- 戻り値:
- 名前区切り文字
-
getRootDirectories
ルート・ディレクトリのパスを反復するためのオブジェクトを返します。ファイル・システムは、いくつかの異なるファイル階層(それぞれに独自の最上位のルート・ディレクトリがある)で構成されている可能性のあるファイル・ストアへのアクセスを提供します。 セキュリティ・マネージャによって拒否されないかぎり、返されるイテレータの各要素は個別のファイル階層のルート・ディレクトリに対応します。 要素の順番は定義されていません。 ファイル階層は、Java仮想マシンの有効期間中に変更される可能性があります。 たとえば、一部の実装では、リムーバブル・メディアの挿入によって独自の最上位ディレクトリを持つ新しいファイル階層が作成されることがあります。
セキュリティ・マネージャがインストールされている場合は、各ルート・ディレクトリへのアクセスをチェックするためにそれが呼び出されます。 拒否された場合、そのルート・ディレクトリはイテレータによって返されません。 デフォルト・プロバイダの場合は、
SecurityManager.checkRead(String)
メソッドが呼び出されて各ルート・ディレクトリへの読取りアクセスがチェックされます。 イテレータの取得時または反復中にアクセス権のチェックが行われるかどうかはシステムに依存します。- 戻り値:
- ルート・ディレクトリを反復処理するオブジェクト
-
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); }
- 戻り値:
- バッキング・ファイル・ストアを反復処理するオブジェクト
-
supportedFileAttributeViews
このFileSystem
によってサポートされるファイル属性ビューの名前
のセットを返します。BasicFileAttributeView
はサポートされる必要があるため、そのセットには少なくとも1つの要素「basic」が含まれています。supportsFileAttributeView(String)
メソッドを使用すると、ベースとなるFileStore
が、ファイル属性ビューで識別されるファイル属性をサポートするかどうかを判定できます。- 戻り値:
- サポートされるファイル属性ビューの変更不可能な名前セット
-
getPath
1つのパス文字列または、連結すると1つのパス文字列を形成する文字列のシーケンスを、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
- パス文字列を変換できない場合
-
getPathMatcher
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)
-
getUserPrincipalLookupService
public abstract UserPrincipalLookupService getUserPrincipalLookupService()このファイル・システムのUserPrincipalLookupService
を返します(オプションの操作)。 結果となる検索サービスを使用すると、ユーザー名またはグループ名を検索できます。使用例: "joe"をファイルの所有者にするとします。
UserPrincipalLookupService lookupService = FileSystems.getDefault().getUserPrincipalLookupService(); Files.setOwner(path, lookupService.lookupPrincipalByName("joe"));
- 戻り値:
- このファイル・システムの
UserPrincipalLookupService
- 例外:
UnsupportedOperationException
- このFileSystem
が検索サービスを備えていない場合
-
newWatchService
public abstract WatchService newWatchService() throws IOException新しいWatchService
を構築します(オプションの操作)。このメソッドは、登録されたオブジェクトの変更およびイベントの監視に使用できる新しい監視サービスを構築します。
- 戻り値:
- 新しい監視サービス
- 例外:
UnsupportedOperationException
- このFileSystem
がファイル・システム・オブジェクトの変更およびイベントの監視をサポートしない場合。 この例外は、デフォルト・プロバイダによって作成されたFileSystems
からはスローされません。IOException
- 入出力エラーが発生した場合
-