模块 java.base

接口 Path

所有父级接口:
Comparable<Path> , Iterable<Path> , Watchable

public interface Path extends Comparable <Path >, Iterable <Path >, Watchable
可用于在文件系统中定位文件的对象。它通常代表系统相关的文件路径。

Path 表示一个层次化的路径,由一系列由特殊分隔符或定界符分隔的目录和文件名元素组成。标识文件系统层次结构的 root component 也可能存在。从目录层次结构的根开始 farthest 的名称元素是文件或目录的名称。其他名称元素是目录名称。 Path 可以表示一个根、一个根和一系列名称,或者只是一个或多个名称元素。 Path 被认为是空路径如果它仅由一个空的名称元素组成。使用一个访问文件空路径相当于访问文件系统的默认目录。 Path 定义了 getFileName getParent getRoot subpath 方法来访问路径组件或其名称元素的子序列。

除了访问路径的组件之外,Path 还定义了 resolve resolveSibling 方法来组合路径。 relativize 方法可用于在两条路径之间构造相对路径。路径可以是 compared ,并使用 startsWith endsWith 方法相互测试。

此接口扩展了 Watchable 接口,因此路径所在的目录可以是 registered WatchService 以及目录中的条目。

WARNING:此接口仅供那些开发自定义文件系统实现的人员实现。在未来的版本中,可能会将方法添加到此接口。

访问文件

路径可以与 Files 类一起使用,以对文件、目录和其他类型的文件进行操作。例如,假设我们希望 BufferedReader 从文件“access.log”中读取文本。该文件位于相对于当前工作目录的目录“logs”中,并且采用 UTF-8 编码。

   Path path = FileSystems.getDefault().getPath("logs", "access.log");
   BufferedReader reader = Files.newBufferedReader(path, StandardCharsets.UTF_8);
 

互操作性

与默认 provider 关联的路径通常可与 java.io.File 类互操作。其他提供者创建的路径不太可能与 java.io.File 表示的抽象路径名互操作。 toPath 方法可用于从 java.io.File 对象表示的抽象路径名中获取 Path。生成的 Path 可用于操作与 java.io.File 对象相同的文件。此外,toFile 方法可用于从 PathString 表示构造 File

并发

此接口的实现是不可变的,可以安全地供多个并发线程使用。

自从:
1.7
  • 方法详情

    • of

      static Path  of(String  first, String ... more)
      通过转换路径字符串或连接形成路径字符串的字符串序列返回 Path。如果 more 未指定任何元素,则 first 参数的值是要转换的路径字符串。如果 more 指定一个或多个元素,则每个非空字符串(包括 first )都被视为一系列名称元素,并连接起来形成路径字符串。有关如何连接字符串的详细信息是特定于提供者的,但通常会使用 name-separator 作为分隔符来连接它们。例如,如果名称分隔符是“/”并且调用了 getPath("/foo","bar","gus"),则路径字符串 "/foo/bar/gus" 将转换为 Path。如果 first 是空字符串并且 more 不包含任何非空字符串,则返回表示空路径的 Path

      Path 是通过调用 default FileSystem getPath 方法获得的。

      请注意,虽然此方法非常方便,但使用它意味着假定引用了默认值 FileSystem 并限制了调用代码的实用性。因此,它不应该用于旨在灵活重用的库代码中。更灵活的替代方案是使用现有的 Path 实例作为锚点,例如:

      
         Path dir = ...
         Path path = dir.resolve("file");
        
      参数:
      first - 路径字符串或路径字符串的初始部分
      more - 要连接以形成路径字符串的附加字符串
      返回:
      结果Path
      抛出:
      InvalidPathException - 如果路径字符串无法转换为 Path
      自从:
      11
      参见:
    • of

      static Path  of(URI  uri)
      通过转换 URI 返回一个 Path

      此方法遍历 installed 提供程序以找到由给定 URI 的 URI scheme 标识的提供程序。 URI 方案的比较不考虑大小写。如果找到提供者,则调用其 getPath 方法来转换 URI。

      在默认提供者的情况下,由 URI 方案“文件”标识,给定的 URI 具有非空路径组件,以及未定义的查询和片段组件。权限组件是否存在是平台特定的。返回的 Pathdefault 文件系统相关联。

      默认提供程序为 File 类提供类似的 round-trip 保证。对于给定的 Pathp保证

      Path.of( p. toUri ()).equals( p. toAbsolutePath ())
      只要原来的 PathURI 和新的 Path 都是在同一个 Java 虚拟机(可能是不同的调用)中创建的。其他提供商是否做出任何保证是提供商特定的,因此未指定。
      参数:
      uri - 要转换的 URI
      返回:
      结果Path
      抛出:
      IllegalArgumentException - 如果 uri 参数的先决条件不成立。 URI 的格式是特定于提供者的。
      FileSystemNotFoundException - 由 URI 标识的文件系统不存在且无法自动创建,或者未安装由 URI 的方案组件标识的提供程序
      SecurityException - 如果安装了安全管理器并且它拒绝访问文件系统的未指定权限
      自从:
      11
    • getFileSystem

      FileSystem  getFileSystem()
      返回创建此对象的文件系统。
      返回:
      创建此对象的文件系统
    • isAbsolute

      boolean isAbsolute()
      判断此路径是否是绝对路径。

      绝对路径是完整的,因为它不需要与其他路径信息结合来定位文件。

      返回:
      true 当且仅当此路径是绝对路径
    • getRoot

      Path  getRoot()
      返回此路径的根组件作为 Path 对象,或 null 如果此路径没有根组件。
      返回:
      表示此路径的根组件的路径,或 null
    • getFileName

      Path  getFileName()
      返回此路径表示的文件或目录的名称作为 Path 对象。文件名是目录层次结构中根部的 farthest 元素。
      返回:
      表示文件或目录名称的路径,如果此路径有零个元素,则为 null
    • getParent

      Path  getParent()
      如果此路径没有父级,则返回 parent pathnull

      此路径对象的父级由此路径的根组件(如果有)和路径中的每个元素组成,但目录层次结构中根目录中的 farthest 除外。该方法不访问文件系统;路径或其父路径可能不存在。此外,此方法不会消除特殊名称,例如“.”。和“..”可以在某些实现中使用。例如,在 UNIX 上,“/a/b/c”的父级是“/a/b”,"x/y/. 的父级是“x/y”。对于需要 shell-like 导航的情况,此方法可以与 normalize 方法一起使用,以消除冗余名称。

      如果此路径有多个元素,并且没有根组件,则此方法等效于计算表达式:

       subpath(0, getNameCount()-1);
       
      返回:
      表示路径父级的路径
    • getNameCount

      int getNameCount()
      返回路径中名称元素的数量。
      返回:
      路径中的元素数,如果此路径仅表示根组件,则为 0
    • getName

      Path  getName(int index)
      将此路径的名称元素作为 Path 对象返回。

      index 参数是要返回的名称元素的索引。目录层次结构中 closest 到根的元素具有索引 0 。来自根的 farthest 元素的索引为 count -1

      参数:
      index - 元素的索引
      返回:
      名称元素
      抛出:
      IllegalArgumentException - 如果 index 为负,则 index 大于或等于元素数,或者此路径的名称元素为零
    • subpath

      Path  subpath(int beginIndex, int endIndex)
      返回一个相对的 Path,它是此路径的名称元素的子序列。

      beginIndexendIndex 参数指定名称元素的子序列。 closest 到目录层次结构中根目录的名称具有索引 0。来自根的 farthest 的名称具有索引 count -1。返回的 Path 对象具有从 beginIndex 开始并扩展到索引 endIndex-1 处的元素的名称元素。

      参数:
      beginIndex - 第一个元素的索引,包括在内
      endIndex - 最后一个元素的索引,独占
      返回:
      一个新的 Path 对象,它是此 Path 中名称元素的子序列
      抛出:
      IllegalArgumentException - 如果 beginIndex 为负数,或者大于或等于元素数。如果 endIndex 小于或等于 beginIndex ,或大于元素数。
    • startsWith

      boolean startsWith(Path  other)
      测试此路径是否以给定路径开头。

      此路径 starts 与给定路径如果此路径的根组件 starts 具有给定路径的根组件,并且此路径以与给定路径相同的名称元素开头。如果给定路径的名称元素多于此路径,则返回 false

      此路径的根组件是否以给定路径的根组件开头是特定于文件系统的。如果此路径没有根组件且给定路径有根组件,则此路径不以给定路径开头。

      如果给定路径与此路径的不同 FileSystem 关联,则返回 false

      参数:
      other - 给定的路径
      返回:
      true 如果此路径以给定路径开始;否则false
    • startsWith

      default boolean startsWith(String  other)
      测试此路径是否以 Path 开头,通过转换给定的路径字符串构造,完全按照 startsWith(Path) 方法指定的方式。例如,在 UNIX 上,路径“foo/bar”以“foo”和“foo/bar”开头。它不以“f”或“fo”开头。
      实现要求:
      此路径的默认实现等效于:
      
         startsWith(getFileSystem().getPath(other));
        
      参数:
      other - 给定的路径字符串
      返回:
      true 如果此路径以给定路径开始;否则false
      抛出:
      InvalidPathException - 如果路径字符串无法转换为路径。
    • endsWith

      boolean endsWith(Path  other)
      测试此路径是否以给定路径结尾。

      如果给定路径有 N 个元素,并且没有根组件,并且此路径有 N 个或更多元素,则如果每条路径的最后 N 个元素(从距根最远的元素开始)相等,则此路径以给定路径结束.

      如果给定路径具有根组件,则如果此路径的根组件ends with给定路径的根组件,并且两条路径的相应元素相等,则此路径以给定路径结束。此路径的根组件是否以给定路径的根组件结尾是特定于文件系统的。如果此路径没有根组件并且给定路径有根组件,则此路径不会以给定路径结束。

      如果给定路径与此路径的不同 FileSystem 关联,则返回 false

      参数:
      other - 给定的路径
      返回:
      true 如果此路径以给定路径结束;否则false
    • endsWith

      default boolean endsWith(String  other)
      测试此路径是否以 Path 结尾,通过转换给定的路径字符串构造,完全按照 endsWith(Path) 方法指定的方式。例如,在 UNIX 上,路径“foo/bar”以“foo/bar”和“bar”结尾。它不以“r”或“/bar”结尾。请注意,未考虑尾随分隔符,因此在 Pathfoo/bar”和Stringbar/”上调用此方法返回true
      实现要求:
      此路径的默认实现等效于:
      
         endsWith(getFileSystem().getPath(other));
        
      参数:
      other - 给定的路径字符串
      返回:
      true 如果此路径以给定路径结束;否则false
      抛出:
      InvalidPathException - 如果路径字符串无法转换为路径。
    • normalize

      Path  normalize()
      返回一个路径,该路径是删除了冗余名称元素的路径。

      此方法的精确定义取决于实现,但通常它源自此路径,该路径不包含 redundant name 元素。在许多文件系统中,“.”和“..”是用来表示当前目录和父目录的特殊名称。在这样的文件系统中,所有出现的“.”都被认为是多余的。如果“..”前面有一个非“..”名称,那么这两个名称都被认为是多余的(重复识别此类名称的过程,直到它不再适用)。

      该方法不访问文件系统;该路径可能找不到存在的文件。从路径中删除“..”和前面的名称可能会导致路径找到与原始路径不同的文件。当前面的名称是符号链接时,就会出现这种情况。

      返回:
      结果路径或此路径(如果它不包含冗余名称元素);如果此路径没有根组件且所有名称元素都是冗余的,则返回空路径
      参见:
    • resolve

      Path  resolve(Path  other)
      根据此路径解析给定路径。

      如果 other 参数是 absolute 路径,则此方法通常会返回 other。如果 other 是一个空路径然后这个方法平凡地返回这个路径。否则,此方法将此路径视为目录并根据此路径解析给定路径。在最简单的情况下,给定路径没有 root 组件,在这种情况下,此方法将 joins 给定路径转换为该路径,并返回与给定路径 ends 的结果路径。如果给定路径具有根组件,则解析高度依赖于实现,因此未指定。

      参数:
      other - 解决此路径的路径
      返回:
      结果路径
      参见:
    • resolve

      default Path  resolve(String  other)
      将给定的路径字符串转换为 Path 并按照 resolve 方法指定的方式针对此 Path 解析它。例如,假设名称分隔符是“/”,路径表示“foo/bar”,则使用路径字符串“gus”调用此方法将导致Pathfoo/bar/gus”。
      实现要求:
      此路径的默认实现等效于:
      
         resolve(getFileSystem().getPath(other));
        
      参数:
      other - 根据此路径解析的路径字符串
      返回:
      结果路径
      抛出:
      InvalidPathException - 如果路径字符串无法转换为路径。
      参见:
    • resolveSibling

      default Path  resolveSibling(Path  other)
      根据此路径的 parent 路径解析给定路径。这在需要文件名的地方很有用更换用另一个文件名。例如,假设名称分隔符为“/”,路径表示“dir1/dir2/foo”,则使用Pathbar”调用此方法将导致 Pathdir1/dir2/bar”。如果此路径没有父路径,或者 otherabsolute ,则此方法返回 other 。如果 other 是空路径,则此方法返回此路径的父路径,或者如果此路径没有父路径,则返回空路径。
      实现要求:
      此路径的默认实现等效于:
      
         (getParent() == null) ? other : getParent().resolve(other);
        
      除非 other == null ,在这种情况下会抛出 NullPointerException
      参数:
      other - 针对此路径的父项解析的路径
      返回:
      结果路径
      参见:
    • resolveSibling

      default Path  resolveSibling(String  other)
      将给定路径字符串转换为 Path 并按照 resolveSibling 方法指定的方式针对此路径的 parent 路径解析它。
      实现要求:
      此路径的默认实现等效于:
      
         resolveSibling(getFileSystem().getPath(other));
        
      参数:
      other - 要根据此路径的父项解析的路径字符串
      返回:
      结果路径
      抛出:
      InvalidPathException - 如果路径字符串无法转换为路径。
      参见:
    • relativize

      Path  relativize(Path  other)
      构造此路径和给定路径之间的相对路径。

      相对化是 resolution 的倒数。此方法尝试构造一个 relative 路径,当 resolved 反对此路径时,生成一个与给定路径定位相同文件的路径。例如,在 UNIX 上,如果此路径为 "/a/b" 而给定路径为 "/a/b/c/d",则生成的相对路径将为 "c/d"。如果此路径和给定路径没有 root 组件,则可以构建相对路径。如果只有一个路径具有根组件,则无法构建相对路径。如果两条路径都有根组件,那么是否可以构造相对路径取决于实现。如果此路径和给定路径是 equal 那么一个空路径被退回。

      对于任意两个 normalized 路径pq, 在哪里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
    • toUri

      URI  toUri()
      返回表示此路径的 URI。

      此方法构造一个绝对 URI ,其 scheme 等于标识提供者的 URI 方案。方案特定部分的确切形式高度依赖于提供者。

      在默认提供程序的情况下,URI 是分层的,具有绝对的 path 组件。查询和片段组件未定义。是否定义权限组件取决于实现。无法保证 URI 可用于构建 java.io.File 。特别是,如果此路径表示通用命名约定 (UNC) 路径,则 UNC 服务名称可能会在生成的 URI 的授权组件中进行编码。在默认提供者的情况下,文件存在,并且可以确定文件是一个目录,那么得到的URI将以斜杠结尾。

      默认提供程序为 File 类提供类似的 round-trip 保证。对于给定的 Pathp保证

      Path.of ( p.toUri()).equals( p . toAbsolutePath ())
      只要原来的 PathURI 和新的 Path 都是在同一个 Java 虚拟机(可能是不同的调用)中创建的。其他提供商是否做出任何保证是提供商特定的,因此未指定。

      当构建一个文件系统来访问文件内容作为一个文件系统时,如果返回的 URI 表示文件系统中的给定路径,或者它表示一个编码封闭文件系统 URI 的 compound URI,则它是高度实现特定的.此版本中未定义复合 URI 的格式;这样的方案可能会在未来的版本中添加。

      返回:
      表示此路径的 URI
      抛出:
      IOError - 如果在获取绝对路径时发生 I/O 错误,或者构建文件系统以访问文件内容作为文件系统,并且无法获取封闭文件系统的 URI
      SecurityException - 在默认提供程序的情况下,安装了安全管理器,toAbsolutePath 方法会引发安全异常。
    • toAbsolutePath

      Path  toAbsolutePath()
      返回一个代表该路径绝对路径的Path对象。

      如果此路径已经是 absolute ,则此方法仅返回此路径。否则,此方法以依赖于实现的方式解析路径,通常是通过针对文件系统默认目录解析路径。根据实现的不同,如果文件系统不可访问,此方法可能会引发 I/O 错误。

      返回:
      代表绝对路径的 Path 对象
      抛出:
      IOError - 如果发生 I/O 错误
      SecurityException - 在默认提供程序的情况下,安装了安全管理器,并且此路径不是绝对的,然后调用安全管理器的checkPropertyAccess 方法来检查对系统属性user.dir的访问
    • toRealPath

      Path  toRealPath(LinkOption ... options) throws IOException
      返回现有文件的 real 路径。

      此方法的精确定义取决于实现,但通常它源自此路径,一个将 same 文件定位为此路径的 absolute 路径,但名称元素表示目录和文件的实际名称。例如,如果文件系统上的文件名比较不区分大小写,则名称元素代表名称的实际大小写。此外,生成的路径删除了多余的名称元素。

      如果此路径是相对路径,则首先获取其绝对路径,就像调用 toAbsolutePath 方法一样。

      options 数组可用于指示如何处理符号链接。默认情况下,符号链接被解析为其最终目标。如果存在选项 NOFOLLOW_LINKS ,则此方法不会解析符号链接。某些实现允许使用特殊名称(例如“..”)来引用父目录。当派生 real path 并且“..”(或等效)前面有一个非“..”名称时,实现通常会导致两个名称都被删除。当不解析符号链接并且前面的名称是符号链接时,只有在保证生成的路径将找到与此路径相同的文件时,才会删除这些名称。

      参数:
      options - 指示如何处理符号链接的选项
      返回:
      绝对路径表示此对象所在文件的real路径
      抛出:
      IOException - 如果文件不存在或发生 I/O 错误
      SecurityException - 在默认提供程序的情况下,并安装了安全管理器,调用其 checkRead 方法来检查对文件的读取访问权限,如果此路径不是绝对路径,则调用其 checkPropertyAccess 方法来检查对系统属性的访问权限user.dir
    • toFile

      default File  toFile()
      返回表示此路径的 File 对象。如果此 Path 与默认提供程序关联,则此方法等效于返回使用此路径的 String 表示构造的 File 对象。

      如果此路径是通过调用 File toPath 方法创建的,则无法保证此方法返回的 File 对象是 equal 到原始 File

      实现要求:
      此路径的默认实现等效于:
      
         new File(toString());
        
      如果创建此 PathFileSystem 是默认文件系统;否则抛出 UnsupportedOperationException
      返回:
      代表此路径的 File 对象
      抛出:
      UnsupportedOperationException - 如果此 Path 未与默认提供程序相关联
    • register

      WatchKey  register(WatchService  watcher, WatchEvent.Kind <?>[] events, WatchEvent.Modifier ... modifiers) throws IOException
      向监视服务注册此路径所在的文件。

      在此版本中,此路径定位一个存在的目录。该目录已注册到监视服务,以便可以监视目录中的条目。 events 参数是要注册的事件,可能包含以下事件:

      这些事件的 context 是此路径所在的目录与创建、删除或修改的目录条目所在的路径之间的相对路径。

      事件集可能包括未由枚举 StandardWatchEventKinds 定义的附加实现特定事件

      modifiers 参数指定 modifiers 来限定目录的注册方式。此版本未定义任何 standard 修饰符。它可能包含特定于实现的修饰符。

      如果文件通过符号链接注册到 watch 服务,那么如果 watch 在注册后继续依赖于符号链接的存在,则它是特定于实现的。

      指定者:
      register 在接口 Watchable
      参数:
      watcher - 此对象要注册到的监视服务
      events - 该对象应注册的事件
      modifiers - 修改对象注册方式的修饰符(如果有)
      返回:
      表示此对象向给定监视服务注册的键
      抛出:
      UnsupportedOperationException - 如果指定了不支持的事件或修饰符
      IllegalArgumentException - 如果指定了无效的事件或修饰符组合
      ClosedWatchServiceException - 如果手表服务关闭
      NotDirectoryException - 如果文件已注册以查看目录中的条目并且文件不是目录(可选的特定例外)
      IOException - 如果发生 I/O 错误
      SecurityException - 在默认提供程序的情况下,安装了安全管理器,将调用 checkRead 方法来检查对文件的读取访问权限。
    • register

      default WatchKey  register(WatchService  watcher, WatchEvent.Kind <?>... events) throws IOException
      向监视服务注册此路径所在的文件。

      此方法的调用与调用的行为完全相同

         watchable.register (watcher, events, new WatchEvent.Modifier[0]);
       

      使用示例:假设我们希望为条目创建、删除和修改事件注册一个目录:

         Path dir = ...
         WatchService watcher = ...
      
         WatchKey key = dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
       
      指定者:
      register 在接口 Watchable
      实现要求:
      此路径的默认实现等效于:
      
         register(watcher, events, new WatchEvent.Modifier[0]);
        
      参数:
      watcher - 此对象要注册到的监视服务
      events - 该对象应注册的事件
      返回:
      表示此对象向给定监视服务注册的键
      抛出:
      UnsupportedOperationException - 如果指定了不支持的事件
      IllegalArgumentException - 如果指定了无效的事件组合
      ClosedWatchServiceException - 如果手表服务关闭
      NotDirectoryException - 如果文件被注册为监视目录中的条目并且文件不是目录(可选的特定例外)
      IOException - 如果发生 I/O 错误
      SecurityException - 在默认提供程序的情况下,安装了安全管理器,将调用 checkRead 方法来检查对文件的读取访问权限。
    • iterator

      default Iterator <Path > iterator()
      返回此路径的名称元素的迭代器。

      迭代器返回的第一个元素表示在目录层次结构中最接近根的名称元素,第二个元素次之,依此类推。返回的最后一个元素是此路径表示的文件或目录的名称。 root 组件(如果存在)不会由迭代器返回。

      指定者:
      iterator 在接口 Iterable<Path>
      实现要求:
      默认实现返回一个 Iterator<Path> ,对于此路径,它遍历 getName(index) 返回的 Path ,其中 index 的范围从零到 getNameCount() - 1 ,包括在内。
      返回:
      此路径的名称元素的迭代器
    • compareTo

      int compareTo(Path  other)
      按字典顺序比较两个抽象路径。此方法定义的顺序是特定于提供者的,在默认提供者的情况下,是特定于平台的。此方法不访问文件系统,并且两个文件都不需要存在。

      此方法不能用于比较与不同文件系统提供程序关联的路径。

      指定者:
      compareTo 在接口 Comparable<Path>
      参数:
      other - 与此路径相比的路径。
      返回:
      如果参数是此路径的equal ,则为零;如果此路径按字典顺序小于参数,则值小于零;如果此路径按字典顺序大于参数,则值大于零
      抛出:
      ClassCastException - 如果路径与不同的提供者相关联
    • equals

      boolean equals(Object  other)
      测试此路径是否与给定对象相等。

      如果给定对象不是 Path,或者是与不同 FileSystem 关联的 Path,则此方法返回 false

      两条路径是否相等取决于文件系统的实现。在某些情况下,比较路径时不考虑大小写,而其他情况则区分大小写。该方法不访问文件系统,不需要文件存在。如果需要,可以使用 isSameFile 方法来检查两个路径是否找到同一个文件。

      此方法满足Object.equals 方法的一般契约。

      重写:
      equals 在类 Object
      参数:
      other - 此对象要与之比较的对象
      返回:
      true 当且仅当给定对象是与此 Path 相同的 Path
      参见:
    • hashCode

      int hashCode()
      计算此路径的哈希码。

      哈希码基于路径的组成部分,并满足 Object.hashCode 方法的一般约定。

      重写:
      hashCode 在类 Object
      返回:
      此路径的哈希码值
      参见:
    • toString

      String  toString()
      返回此路径的字符串表示形式。

      如果此路径是通过使用 getPath 方法转换路径字符串创建的,则此方法返回的路径字符串可能与用于创建路径的原始字符串不同。

      返回的路径字符串使用默认名称 separator 来分隔路径中的名称。

      重写:
      toString 在类 Object
      返回:
      此路径的字符串表示形式