public abstract class FileSystem extends Object implements Closeable
默认的文件系统,通过调用FileSystems.getDefault
方法获得,提供了访问,是java虚拟机访问文件系统。的FileSystems
类定义创建提供访问其他类型的文件系统的方法(自定义)文件系统。
文件系统是几种类型的对象的工厂:
的getPathMatcher
方法是用来创建一个PathMatcher
路径执行匹配操作。
在底层的getFileStores
方法返回的迭代器file-stores
。
的getUserPrincipalLookupService
方法返回UserPrincipalLookupService
查找用户或组的名称。
的newWatchService
方法创建一个WatchService
可以用来观看的对象和事件变化。
文件系统有很大的不同。在某些情况下,文件系统是一个带有一个顶级根目录的文件的单个层次结构。在其他情况下,它可能有几个不同的文件层次结构,每一个都有自己的顶级根目录。的getRootDirectories
方法可用于迭代根目录在文件系统。文件系统通常是由一个或多个潜在的file-stores
提供文件的存储。这些文件存储也可以在它们所支持的功能上有所不同,并且它们与文件关联的文件属性或元数据。
一个文件系统是开放在创作可以通过调用其close
方法封闭。一旦关闭,任何试图访问对象文件系统中的原因ClosedFileSystemException
被。文件系统默认创建的provider
不能关闭。
一个FileSystem
可以为只读或读写访问文件系统。是否有一个文件系统提供只读访问建立的时候FileSystem
创建,可以通过调用其isReadOnly
法测试。试图写入文件存储的只读文件系统相关的对象就是把ReadOnlyFileSystemException
。
文件系统是安全的,使用多个并发线程。的close
方法可以在任何时候调用关闭一个文件系统,文件系统是否是异步闭合是提供程序特定的,因此不。换句话说,如果一个线程在一个文件系统访问一个对象,而另一个线程调用close
方法则可能需要等到第一次手术完成。关闭文件系统使所有打开的通道,看服务,并与文件系统相关的其他closeable
对象被关闭。
Modifier | Constructor and Description |
---|---|
protected |
FileSystem()
初始化该类的一个新实例。
|
Modifier and Type | Method and Description |
---|---|
abstract void |
close()
关闭此文件系统。
|
abstract Iterable<FileStore> |
getFileStores()
返回一个对象来遍历文件存储。
|
abstract Path |
getPath(String first, String... more)
将路径字符串,或一个字符串序列,当加入形成路径字符串,一个
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 的
names 集。
|
public abstract FileSystemProvider provider()
public abstract void close() throws IOException
后一个文件系统关闭后的所有后续访问文件系统,通过这个类定义的方法或对该文件系统相关的对象,把ClosedFileSystemException
。如果文件系统已经关闭,则调用该方法没有效果。
关闭文件系统将关闭所有打开的channels
,directory-streams
,watch-service
,等闭合的对象文件系统相关的。的default
文件系统不能关闭。
close
接口
Closeable
close
接口
AutoCloseable
IOException
如果I/O错误发生
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虚拟机的一生中的变化。当一个I / O错误发生时,可能是因为一个文件存储是不可访问的,然后它不是由迭代器返回的。
在默认的提供程序的情况下,和安全管理器安装,安全管理是用来检查RuntimePermission
("getFileStoreAttributes")。如果被拒绝,则没有迭代器返回的文件存储。此外,保安部经理的SecurityManager.checkRead(String)
方法被调用来检查访问文件存储的最顶层目录读取。如果被拒绝,则该文件存储不返回的迭代器。它是系统依赖的,如果在迭代过程中获得或迭代时的权限检查完成。
使用示例:假设我们想打印所有文件存储空间的使用:
为(文件存储:文件系统。getdefault()。getfilestores()){长总=店。gettotalspace() / 1024;长期使用=(商店。gettotalspace()店。getunallocatedspace())/ 1024;长果=店。getusablespace() / 1024;系统的格式(“% - 20 % % % % 12d 12d 12d N”,店总,使用效果);}
public abstract Set<String> supportedFileAttributeViews()
FileSystem
的
names
集。
的BasicFileAttributeView
需要支持,因此集至少包含一个元素,“基本”。
的supportsFileAttributeView(String)
方法可以用来测试是否一个潜在的FileStore
支持文件属性的文件属性查看鉴定。
public abstract Path getPath(String first, String... more)
Path
。如果
more
不指定任何元素的
first
参数值的路径字符串转换。如果
more
指定一个或多个元素,然后每个非空的字符串,包括
first
,被认为是一个序列的名称的元素(见
Path
)和连接形成一个字符串。的细节如何串连接是提供程序特定的但通常他们会使用
name-separator
作为分隔符的加入。例如,如果名称分离器”
/
”和
getPath("/foo","bar","gus")
被调用,然后路径字符串转换为一个
Path
"/foo/bar/gus"
。一个
Path
代表一个空的路径,如果
first
是空字符串,
more
不包含任何非空字符串返回。
解析和转换到一个路径对象本质上是依赖于实现的。在最简单的情况下,路径的字符串被拒绝,并InvalidPathException
抛出,如果路径字符串中包含的字符不能转换为所存储的文件的法律性质。例如,在UNIX系统中,空(\ u0000)字符是不允许在路径是存在的。一个实现可能会选择拒绝包含那些比任何文件存储所允许的都长的名字的路径字符串,并且实现支持一个复杂的路径语法,它可以选择拒绝被错误形成的路径字符串。
在默认提供程序的情况下,基于对平台或虚拟文件系统级的路径的定义解析路径字符串。例如,一个操作系统可能不允许在文件名中存在特定的字符,但一个特定的底层文件存储区可能会对法律字符集施加不同或额外的限制。
该方法将InvalidPathException
当路径字符串不能转换为路径。在可能的情况下,在适用的情况下,唯一的例外是一个index
值指示引起的路径字符串被拒绝的path
参数第一的位置了。
first
的路径字符串或路径字符串的起始部分
more
附加字符串被连接形成路径的字符串
Path
InvalidPathException
如果路径字符串不能转换
public abstract PathMatcher getPathMatcher(String syntaxAndPattern)
PathMatcher
执行匹配操作的
Path
对象
String
表示通过解释给定的模式。
syntaxAndPattern
参数标识的语法模式和采取的形式:
哪里syntax:pattern
':'
代表本身。
一个FileSystem
实施支持“glob
”和“regex
”语法,可以支持别人。的语法组件的值进行比较,而不考虑情况。
当语法是“glob
”路径的String
表示使用有限的模式语言,类似于正则表达式匹配但有更简单的语法。例如:
*.java
Matches a path that represents a file name ending in .java
*.*
Matches file names containing a dot *.{java,class}
Matches file names ending with .java
or.class
foo.?
Matches file names starting with foo.
and a single character extension/home/*/* Matches /home/gus/data on UNIX platforms /home/** Matches /home/gus and /home/gus/data on UNIX platforms C:\\* Matches C:\foo and C:\bar on the Windows platform (note that the backslash is escaped; as a string literal in the Java Language the pattern would be "C:\\\\*")
下面的规则是用来解释世界的模式:
的*
字符匹配零个或多个没有越过边界的一个组成部分characters
name
目录。
的**
字符匹配零个或多个目录characters
穿越边界。
的?
字符完全匹配一个字符的名称部分。
反斜杠字符(\
)是用来转义字符,否则将被解释为特殊字符。表达\\
匹配一个反斜杠“\ {”匹配一个比如左括号。
[ ]
的字符是支架的表达匹配一个名字组成一个字符的字符集。例如,[abc]
比赛"a"
,"b"
,或"c"
。连字符(-
)可以用来指定一个范围,所以[a-z]
指定范围,比赛从"a"
到"z"
(含)。这些形式可以混合abce-g ] [比赛"a"
,"b"
,"c"
,"e"
,"f"
或"g"
。如果字符后的[
是!
则用于否定,[!a-c]
匹配任何字符除了"a"
,"b"
,或"c"
。
中括号表达式内的*
,?
和\
字符匹配自己。的(-
)字符匹配本身如果是括号内的第一个字符,或第一个字符后的!
如果否定。
{ }
字符的一组的子模式,在小组赛中如果组中任何类型的比赛。的","
字符用于分隔的子模式。组不能嵌套。
在文件名的领先period/dot特征作为匹配操作的规律特征。例如,在"*"
glob模式匹配的文件名".login"
。的Files.isHidden(java.nio.file.Path)
方法可以用来测试一个文件是否被隐藏。
所有其他的字符匹配自己在一个实现依赖的方式。这包括任何name-separators
代表人物。
root
元件的匹配是高度依赖于实现的和未指定。
当语法是“regex
”模式的组件是一个正则表达式的Pattern
类定义。
对于全球和正则表达式的语法、匹配的细节,如是否匹配是大小写敏感的,是依赖于实现的,因此没有指定。
syntaxAndPattern
-
IllegalArgumentException
如果参数不采取的形式:
syntax:pattern
PatternSyntaxException
-如果模式是无效的
UnsupportedOperationException
如果语法不知道实施
Files.newDirectoryStream(Path,String)
public abstract UserPrincipalLookupService getUserPrincipalLookupService()
UserPrincipalLookupService
(可选操作)。由此产生的查找服务可用于查找用户或组名。
使用示例:假设我们想让“乔”一个文件的所有者:
userprincipallookupservice lookupservice =文件系统。getdefault()。getuserprincipallookupservice();文件。系主(路径,lookupservice。lookupprincipalbyname(“乔”));
UserPrincipalLookupService
UnsupportedOperationException
-如果这
FileSystem
不有查找服务
public abstract WatchService newWatchService() throws IOException
WatchService
(可选操作)。
此方法构造了一个新的监视服务,该服务可用于监视更改和事件的注册对象。
UnsupportedOperationException
-如果这
FileSystem
不支持看变化和事件的文件系统对象。这个例外是不是默认的提供程序创建
FileSystems
扔。
IOException
如果I/O错误发生
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.