public interface Path extends Comparable<Path>, Iterable<Path>, Watchable
一个Path表示一个路径是分层序列组成的目录和文件名的元素由一个特殊的分离器或分隔符分隔。标识一个文件系统层次结构的根组件,也可以是存在的。从目录层次结构的根最远的名称元素是一个文件或目录的名称。其他名称元素是目录名。一个Path可以代表一个根,根和一系列的名字,或只是一个或多个名称的元素。一个Path是空的路径如果仅由一名元素是空的。使用空的路径访问文件就相当于访问文件系统的默认目录。Path定义getFileName,getParent,getRoot,和subpath方法访问路径组件或子元素的名称。
除了访问路径的组件,一个Path也定义了resolve和resolveSibling方法相结合的路径。的relativize方法可用于构造两路径的相对路径。路径可以compared,和互相测试使用startsWith和endsWith方法。
这Watchable接口扩展接口以便目录的路径定位可以在同一个目录下WatchService和条目registered看。
警告:此接口仅是由那些开发定制的文件系统实现实现。方法可能会添加到这个接口在未来的版本。
路径可以用Files类来操作文件,目录,和其他类型的文件。例如,假设我们想要一个BufferedReader读取文本文件中的“access.log”。文件所在的目录中的“logs”相对于当前工作目录是UTF-8编码。
路径=文件系统。getdefault()。方法:获取文件名路径(“日志”、“访问日志”);BufferedReader读者=文件。newbufferedreader(路径,standardcharsets。utf_8);
用默认的provider相关的路径通常是与java.io.File类互操作。由其他供应商创建的路径是不可能以java.io.File抽象路径名的互操作。的toPath方法可用于从一java.io.File对象表示的抽象路径名获得Path。由此产生的Path可以用来操作在同一个文件的java.io.File对象。此外,该toFile方法是从一个Path的String表示构建一个File有用。
此接口的实现是不可变的和安全的,使用多个并发线程。
Paths
| Modifier and Type | Method and Description |
|---|---|
int |
compareTo(Path other)
比较两个抽象路径字典。
|
boolean |
endsWith(Path other)
测试,如果这个路径结束与给定的路径。
|
boolean |
endsWith(String other)
如果这一测试路径以
Path,由转换给定路径的字符串,以完全的方式
endsWith(Path)方法指定。
|
boolean |
equals(Object other)
用给定的对象来测试此路径。
|
Path |
getFileName()
返回文件名或目录用该路径作为
Path对象。
|
FileSystem |
getFileSystem()
返回创建此对象的文件系统。
|
Path |
getName(int index)
返回一个名字元这条道路作为一个
Path对象。
|
int |
getNameCount()
返回路径中的名称元素的数目。
|
Path |
getParent()
返回父路径,或
null如果这条路没有父。
|
Path |
getRoot()
返回该路径的根组件作为一个
Path对象,或
null如果这条路没有根组件。
|
int |
hashCode()
计算此路径的哈希代码。
|
boolean |
isAbsolute()
告诉是否这条路径是绝对的。
|
Iterator<Path> |
iterator()
返回此路径的名称元素的迭代器。
|
Path |
normalize()
返回一个路径,这是一个冗余的名称元素消除的路径。
|
WatchKey |
register(WatchService watcher, WatchEvent.Kind<?>... events)
通过该路径的一个表服务注册位于该路径中的文件。
|
WatchKey |
register(WatchService watcher, WatchEvent.Kind<?>[] events, WatchEvent.Modifier... modifiers)
通过该路径的一个表服务注册位于该路径中的文件。
|
Path |
relativize(Path other)
在这个路径和一个给定路径之间构造一个相对路径。
|
Path |
resolve(Path other)
解决此路径的给定路径。
|
Path |
resolve(String other)
|
Path |
resolveSibling(Path other)
解决给定的路径在路径的
parent路径。
|
Path |
resolveSibling(String other)
|
boolean |
startsWith(Path other)
测试,如果这个路径开始与给定的路径。
|
boolean |
startsWith(String other)
如果这个测试路径从一个
Path,通过将给定的路径字符串,以完全的方式
startsWith(Path)方法指定。
|
Path |
subpath(int beginIndex, int endIndex)
返回一个相对
Path是子的这条道路的名称的元素。
|
Path |
toAbsolutePath()
返回表示该路径的绝对路径
Path对象。
|
File |
toFile()
返回一个表示该路径
File对象。
|
Path |
toRealPath(LinkOption... options)
返回一个现有文件的真正路径。
|
String |
toString()
返回此路径的字符串表示形式。
|
URI |
toUri()
返回一个URI来表示这条路。
|
forEach, spliteratorFileSystem getFileSystem()
boolean isAbsolute()
一个绝对路径是完整的,它不需要与其他路径信息相结合,以确定一个文件。
true如果,如果,这条路是绝对的
Path getRoot()
Path对象,或
null如果这条路没有根组件。
null
Path getFileName()
Path对象。文件名是目录层次结构中根目录中最远的元素。
null如果这条路径零元素
Path getParent()
null如果这条路没有父。
此路径对象的父对象包括此路径的根组件,如果有的话,以及路径中的每个元素,除了目录层次结构中的根目录之外的每一个元素。此方法不访问文件系统;路径或它的父可能不存在。此外,这种方法不消除特殊的名称,如“。”和“..”,可用于在一些实现。在UNIX为例,母“/a/b/c”是“/a/b”,和“家长”"x/y/. x/y”。该方法可用于与normalize方法,来消除冗余的名字,如贝壳般的导航是必需的。
如果此路径有一个或多个元素,而没有根组件,则此方法相当于评估表达式的表达式:
subpath(0, getNameCount()-1);
int getNameCount()
0如果这条路只代表一根组件
Path getName(int index)
Path对象。
的index参数名称的元素返回索引。这是最接近根目录层次结构中的元素的索引0。这是从根远的元素的索引count-1。
index -元素的索引
IllegalArgumentException -如果
index是负的,
index大于或等于元素的数目,或这条路径零命名元素
Path subpath(int beginIndex, int endIndex)
Path是子的这条道路的名称的元素。
的beginIndex和endIndex参数指定名称的子元素。名字是最接近根目录层次结构中的索引0。这个名字,是从根本上最大限度的指标count-1。返回的Path对象名称的元素,开始在beginIndex延伸至元在指数endIndex-1。
beginIndex -第一个元素的索引,包括
endIndex -最后一个元素的索引,独家
Path对象,后续在这
Path元素的名称
IllegalArgumentException -如果
beginIndex是负的,或大于或等于元素的数目。如果
endIndex小于或等于或大于
beginIndex,元素的数目。
boolean startsWith(Path other)
此路径开始于给定的路径,如果这条路径的根组件开始与给定路径的根组件,而这个路径开始与给定的路径相同的名称元素。如果给定的路径比这条路再false返回更多的名称的元素。
是否这个路径的根组件开始与给定路径的根组件是文件系统特定的。如果这个路径没有一个根组件,并且给定的路径有一个根组件,那么这个路径不从给定的路径开始。
如果给定的路径是不同的FileSystem这个路径,然后false返回相关。
other -给定的路径
true路径开始与给定的路径;否则
false
boolean startsWith(String other)
Path,通过将给定的路径字符串,以完全的方式
startsWith(Path)方法指定。在Unix上例如,路径“
foo/bar”开始“
foo”和“
foo/bar”。它不是从“
f”或“
fo”。
other -给定的路径字符串
true路径开始与给定的路径;否则
false
InvalidPathException如果路径字符串不能转换为路径。
boolean endsWith(Path other)
如果给定路径有n个元素,而没有根组件,这个路径有n个或更多的元素,那么这个路径结束与给定的路径,如果最后一个n元素的每个路径,从最远的根,从根开始,是平等的。
如果给定的路径有一个根组件,则此路径结束与给定的路径,如果这个路径的根组件结束与给定路径的根组件,这两个路径的相应的元素是相等的。是否这个路径的根组件结束与给定路径的根组件是文件系统特定的。如果这个路径没有一个根组件,并且给定的路径有一个根组件,那么这个路径不结束与给定的路径。
如果给定的路径是不同的FileSystem这个路径,然后false返回相关。
other -给定的路径
true路径以给定的路径;否则
false
boolean endsWith(String other)
Path,由转换给定路径的字符串,以完全的方式
endsWith(Path)方法指定。在Unix上例如,路径“
foo/bar“两端”的
foo/bar”和“
bar”。它并没有结束”
r”或“
/bar”。注意,尾随分离器被考虑,所以调用该方法的
Path”
foo/bar”与
String”
bar/”返回
true。
other -给定的路径字符串
true路径以给定的路径;否则
false
InvalidPathException如果路径字符串不能转换为路径。
Path normalize()
该方法的精确定义是实现依赖,但一般来说,它来自这个路径,一个不包含冗余名称元素的路径。在许多文件系统,“.”和“..”用来表示当前目录和父目录的名字。在这样的文件系统,所有发生的“.”被认为是多余的。如果一个“..”之前,非“..”的名字,然后两个人的名字都被认为是多余的(过程识别这样的名字是重复直到它不再适用)。
此方法不访问文件系统;路径可能找不到存在的文件。消除“..”和前面的名字从路径可能导致路径,找到一个比原来的路径,不同的文件。当前面的名称是一个符号链接时,就会出现此项。
getParent(),
toRealPath(java.nio.file.LinkOption...)
Path resolve(Path other)
如果other参数是一个absolute路径然后该方法返回other平凡。如果other是空的路径此方法十分返回路径。否则,这种方法认为这条路径是一个目录,并解决了给定的路径,这条路径。在最简单的情况下,给出的路径没有root组件,在这种情况下,该方法将给定的路径这一路径和返回路径,给出的路径ends。在给定路径有一个根组件,然后分辨率是高度依赖的实现,因此未指定。
other -解决路径
relativize(java.nio.file.Path)
Path resolve(String other)
Path解决它反对这
Path完全相同的方式,通过
resolve方法指定。例如,假设名称分离器”
/”和“
foo/bar路径代表”,然后调用该方法与路径字符串“
gus”将导致
Path”
foo/bar/gus”。
other的路径字符串解决反对这条道路
InvalidPathException如果路径字符串不能转换为路径。
FileSystem.getPath(java.lang.String, java.lang.String...)
Path resolveSibling(Path other)
parent路径。这是有用的文件名必须与另一个文件名更换。例如,假设名称分离器”
/”和“
dir1/dir2/foo路径代表”,然后调用该方法与
Path”
bar”将导致
Path”
dir1/dir2/bar”。如果这条路没有父路径,或
other是
absolute,那么这个方法返回
other。如果
other是一个空的路径然后这个方法返回这条路的家长,或者这条路没有父母,空荡荡的路径。
other -解决在此路径的父路径
resolve(Path)
Path resolveSibling(String other)
other的路径字符串来解决对这种路径的父
InvalidPathException如果路径字符串不能转换为路径。
FileSystem.getPath(java.lang.String, java.lang.String...)
Path relativize(Path other)
相对性是resolution逆。这种方法试图构建一个relative路径,当resolved反对这条路,产生的路径位于同一个文件的路径。例如,在UNIX系统上,如果这条路是"/a/b"和给出的路径是"/a/b/c/d"然后得到的相对路径将"c/d"。这条路径,给出的路径没有root组件,然后相对路径可以构造。如果只有一个路径有根组件,就不能构建一个相对路径。如果这两个路径都有一个根组件,那么它是依赖于实现的,如果一个相对路径可以构造。如果这一路径,给出的路径是一个空的路径equal然后返回。
任何两normalized路径p和q,q没有一根组件,
p .relativize( p .resolve( q )).equals( q )
当符号链接的支持,那么是否产生的路径,当解决反对这条路,产生的路径,可以用来定位same文件作为other是依赖于实现的。例如,如果这条路是"/a/b"和给出的路径是"/a/x"然后得到的相对路径可能"../x"。如果"b"是一个符号链接,然后是依赖于实现的如果"a/b/../x"会找到相同的文件"/a/x"。
other -相对路径
IllegalArgumentException -如果
other不是
Path可以相对反对这条道路
URI toUri()
该方法构建一个scheme等于URI方案确定提供一个绝对的URI。该方案特定部分的确切形式是高度依赖于提供者的。
在默认的提供程序的情况下,URI是分层与path组件,是绝对的。查询和片段组件是未定义的。是否定义了权限组件是否是依赖于实现的。没有保证,URI可用来构建java.io.File。特别是,如果这条道路是一个通用命名约定(UNC)路径,然后UNC服务器名称可能造成的URI权限组件编码。在默认的提供程序的情况下,与该文件存在,并且可以确定该文件是一个目录,然后产生URI结尾斜线。
默认提供程序的类提供了一个类似的File往返保证。对于一个给定的Path P这是保证
只要原来的Paths.get( p .toUri()).equals( p .toAbsolutePath())
Path,
URI,和新的
Path都创造了(可能不同的调用)相同的java虚拟机。是否其他供应商作出任何保证是供应商的具体,因此未指定。
当一个文件系统来访问文件的内容作为一个文件系统,那么返回的URI表示给定的路径在文件系统或它代表的是一种复合的URI编码封闭的文件系统是实现特定的URI。一种复合URI格式不在此版本中定义;这样的方案可能会在未来的版本中添加。
IOError如果I/O错误时获得的绝对路径,或在一个文件系统访问一个文件的内容作为一个文件系统,以及封闭的文件系统不能得到的URI
SecurityException在默认提供程序的情况下,和安全管理器安装的
toAbsolutePath方法会引发安全异常。
Path toAbsolutePath()
Path对象。
如果这条路已经absolute此方法只返回该路径。否则,这种方法解决了依赖于实现依赖的方式的路径,通常是通过解决文件系统默认目录的路径来实现的。根据实现,这种方法可能会抛出一个I / O错误,如果文件系统是不可访问的。
Path表示绝对路径
IOError如果I/O错误发生
SecurityException在默认提供程序的情况下,安装安全管理器,和这条路不是绝对的,那么安全经理的
checkPropertyAccess方法被调用来检查访问系统性能
user.dir
Path toRealPath(LinkOption... options) throws IOException
该方法的准确的定义是依赖于实现的但一般来源于这条道路,一个absolute路径位于same文件路径,但名称的元素,代表实际的目录名和文件。例如,在一个文件系统的文件名比较是不区分大小写的,然后在他们的实际情况下的名称元素代表的名称。此外,所生成的路径有多余的名称元素删除。
如果这个路径是相对其绝对路径是首先获得,如通过调用toAbsolutePath方法。
的options阵列可以用来指示如何处理符号链接。默认情况下,符号链接将解析到他们的最终目标。如果选择NOFOLLOW_LINKS是目前此方法不能解决的符号链接。一些实现允许特别的名字,如“..”指父目录。当导出的现实路径,和“..”(或同等)之前的非“..”的名称,然后执行通常会导致名字被删除。当不解决符号链接和前面的名称是一个象征性的链接,然后只有删除的名称,如果它保证,产生的路径将找到相同的文件,这条路径。
options选项指示如何处理符号链接
IOException -如果文件不存在或发生I/O错误
SecurityException在默认提供程序的情况下,和安全管理器安装,其
checkRead方法被调用来检查对文件的读访问,而这一路径不是绝对的,它的
checkPropertyAccess方法被调用来检查访问系统性能
user.dir
File toFile()
File对象。在这
Path与默认的提供程序,则此方法等效于返回一个
File对象与该路径的
String表示构造。
如果这条道路是通过调用File toPath方法再也不能保证此方法返回的对象的File equal到原来的File创建。
File对象
UnsupportedOperationException -如果这
Path是不是默认提供程序相关的
WatchKey register(WatchService watcher, WatchEvent.Kind<?>[] events, WatchEvent.Modifier... modifiers) throws IOException
在这个版本中,这条路径定位一个存在的目录。该目录是注册的手表服务,使目录中的条目可以被监视。的events参数是登记的事件,可能包含以下事件:
ENTRY_CREATE输入创建或进入目录ENTRY_DELETE输入删除或移动的目录ENTRY_MODIFY输入目录被修改这些事件的context是目录的路径位置之间的相对路径和路径,所处的目录条目被创建,删除或修改。
该组事件可能包括额外的实施具体的事件不是由StandardWatchEventKinds枚举的定义
的modifiers参数指定修饰符限定目录登记。此版本不定义任何标准的修改器。它可能包含实现特定的改性剂。
如果一个文件是通过一个象征性的链接注册一个手表服务,那么它是实施具体的,如果手表继续依赖于它注册后的符号链接的存在。
register 接口
Watchable
watcher -看服务的对象是注册
events的事件,这个对象应该被注册
modifiers -改性剂,如果有的话,修改对象如何注册
UnsupportedOperationException -如果指定了不受支持的事件或改性剂
IllegalArgumentException -如果事件或修饰符指定无效的组合
ClosedWatchServiceException如果看服务关闭
NotDirectoryException -如果文件注册到一个目录和文件表条目不是一个目录(可选特定异常)
IOException如果I/O错误发生
SecurityException在默认提供程序的情况下,和安全管理器的安装,
checkRead方法被调用来检查对文件的读访问。
WatchKey register(WatchService watcher, WatchEvent.Kind<?>... events) throws IOException
此方法的调用与调用的方式完全相同的行为
有看头。register(人,事件,新的watchevent。改性剂[ 0 ]);
使用示例:假设我们希望登记进入的目录中创建,删除,修改事件:
路径目录=…WatchService守望者=…watchkey关键=迪尔。登记(守望者,entry_create,entry_delete,entry_modify);
register 接口
Watchable
watcher -看服务的对象是注册
events的事件,这个对象应该被注册
UnsupportedOperationException -如果指定了不受支持的事件
IllegalArgumentException -如果指定事件无效组合
ClosedWatchServiceException如果看服务关闭
NotDirectoryException -如果文件注册到一个目录和文件表条目不是一个目录(可选特定异常)
IOException如果I/O错误发生
SecurityException在默认提供程序的情况下,和安全管理器的安装,
checkRead方法被调用来检查对文件的读访问。
Iterator<Path> iterator()
迭代器返回的第一个元素表示在目录层次结构中最接近根目录的名称元素,第二个元素是下一个最接近的元素,等等。返回的最后一个元素是由这个路径表示的文件或目录的名称。的root成分,如果存在,是不是返回的迭代器。
int compareTo(Path other)
此方法可能不被用于比较与不同的文件系统供应商关联的路径。
compareTo 接口
Comparable<Path>
other -路径相比,这条路。
equal这个路径,一个小于零的值如果这个路径是字典序小于参数,或大于零的值,如果这个路径字典比参数
ClassCastException如果路径与不同的供应商联系
boolean equals(Object other)
如果给定的对象不是一个路径,或是一个不同的FileSystem相关的路径,那么这个方法返回false。
是否两条路径是否相等取决于文件系统的实现。在某些情况下,路径进行比较,而不考虑情况下,和其他人是情况下敏感。此方法不访问文件系统,该文件不需要存在。在需要的地方,这isSameFile方法可如果两路径定位相同的文件用来检查。
该方法满足了Object.equals方法一般合同。
equals 方法重写,继承类
Object
other -此对象所要比较的对象
true如果,仅仅是如果,在给定的对象是一个
Path就是这
Path相同
Object.hashCode(),
HashMap
int hashCode()
散列码是基于路径的组件,满足的Object.hashCode方法一般合同。
hashCode 方法重写,继承类
Object
Object.equals(java.lang.Object),
System.identityHashCode(java.lang.Object)
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.