Module java.base
Package java.io

Class File

java.lang.Object
java.io.File
所有已实现的接口:
Serializable, Comparable<File>

public class File extends Object implements Serializable, Comparable<File>
文件和目录路径名的抽象表示。

用户界面和操作系统使用系统相关的路径名字符串来命名文件和目录。这个类提供了一个抽象的、与系统无关的层次路径名视图。一个抽象路径名有两个组成部分:

  1. 一个可选的系统相关的前缀字符串,比如磁盘驱动器说明符,UNIX根目录的"/",或Microsoft Windows UNC路径名的"\\\\",以及
  2. 一个零个或多个字符串名称的序列。
抽象路径名中的第一个名称可以是目录名称,或者在Microsoft Windows UNC路径名的情况下,是主机名。抽象路径名中的每个后续名称表示一个目录;最后一个名称可以表示一个目录或一个文件。抽象路径名没有前缀和空名称序列。

路径名字符串与抽象路径名之间的转换在本质上是系统相关的。当将抽象路径名转换为路径名字符串时,每个名称都由默认的分隔符字符分隔。默认的名称分隔符字符由系统属性file.separator定义,并在这个类的公共静态字段separatorseparatorChar中提供。当路径名字符串转换为抽象路径名时,其中的名称可以由默认的名称分隔符字符分隔,也可以由底层系统支持的任何其他名称分隔符字符分隔。

路径名,无论是抽象的还是字符串形式,都可以是绝对的相对的。绝对路径名是完整的,不需要其他信息就可以定位它所表示的文件。相反,相对路径名必须根据从其他路径名获取的信息来解释。默认情况下,java.io包中的类总是将相对路径名解析为当前用户目录。这个目录由系统属性user.dir命名,通常是调用Java虚拟机的目录。

抽象路径名的父目录可以通过调用这个类的getParent()方法来获得,它由路径名的前缀和路径名的名称序列中除了最后一个名称之外的每个名称组成。每个目录的绝对路径名是任何以该目录的绝对路径名开头的File对象的祖先。例如,由抽象路径名"/usr"表示的目录是由路径名"/usr/local/bin"表示的目录的祖先。

前缀概念用于处理UNIX平台上的根目录,以及Microsoft Windows平台上的驱动器说明符、根目录和UNC路径名,如下所示:

  • 对于UNIX平台,绝对路径名的前缀始终是"/"。相对路径名没有前缀。表示根目录的抽象路径名具有前缀"/"和空名称序列。
  • 对于Microsoft Windows平台,包含驱动器说明符的路径名的前缀由驱动器号后跟":"组成,如果路径名是绝对的,则可能后跟"\\"。UNC路径名的前缀是"\\\\";主机名和共享名称是名称序列中的前两个名称。不指定驱动器的相对路径名没有前缀。

这个类的实例可能或可能不表示实际的文件系统对象,比如文件或目录。如果它确实表示这样的对象,则该对象位于一个分区中。分区是文件系统的操作系统特定的存储部分。单个存储设备(例如物理磁盘驱动器、闪存、CD-ROM)可能包含多个分区。该对象(如果有的话)将驻留在由这个路径名的绝对形式的某个祖先命名的分区上。

文件系统可能对实际文件系统对象上的某些操作实施限制,比如读取、写入和执行。这些限制统称为访问权限。文件系统可能对单个对象有多组访问权限。例如,一组可能适用于对象的所有者,另一组可能适用于所有其他用户。对象的访问权限可能导致这个类中的某些方法失败。

File类的实例是不可变的;也就是说,一旦创建,由File对象表示的抽象路径名将永远不会改变。

java.nio.file包的互操作性

java.nio.file包定义了Java虚拟机访问文件、文件属性和文件系统的接口和类。这个API可以用来克服java.io.File类的许多限制。可以使用toPath方法获取一个使用File对象表示的抽象路径的Path,然后可以将结果的PathFiles类一起使用,以提供更高效和更广泛的访问额外文件操作、文件属性和I/O异常,以帮助诊断文件操作失败时的错误。

自版本:
1.0
参见:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    系统相关的路径分隔符字符,以字符串表示以方便使用。
    static final char
    系统相关的路径分隔符字符。
    static final String
    系统相关的默认名称分隔符字符,以字符串表示以方便使用。
    static final char
    系统相关的默认名称分隔符字符。
  • Constructor Summary

    Constructors
    Constructor
    Description
    File(File parent, String child)
    从父抽象路径名和子路径名字符串创建一个新的File实例。
    File(String pathname)
    通过将给定的路径名字符串转换为抽象路径名来创建一个新的File实例。
    File(String parent, String child)
    从父路径名字符串和子路径名字符串创建一个新的File实例。
    File(URI uri)
    通过将给定的file: URI转换为抽象路径名来创建一个新的File实例。
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    测试应用程序是否可以执行由这个抽象路径名表示的文件。
    boolean
    测试应用程序是否可以读取由这个抽象路径名表示的文件。
    boolean
    测试应用程序是否可以修改由这个抽象路径名表示的文件。
    int
    compareTo(File pathname)
    按字典顺序比较两个抽象路径名。
    boolean
    如果且仅当尚不存在具有此名称的文件时,原子地创建由此抽象路径名命名的新空文件。
    static File
    createTempFile(String prefix, String suffix)
    在默认临时文件目录中创建一个新的空文件,使用给定的前缀和后缀生成其名称。
    static File
    createTempFile(String prefix, String suffix, File directory)
    在指定目录中使用给定的前缀和后缀字符串创建一个新的空文件。
    boolean
    delete()
    删除由这个抽象路径名表示的文件或目录。
    void
    请求在虚拟机终止时删除由这个抽象路径名表示的文件或目录。
    boolean
    equals(Object obj)
    测试这个抽象路径名是否与给定对象相等。
    boolean
    exists()
    测试由这个抽象路径名表示的文件或目录是否存在。
    返回这个抽象路径名的绝对形式。
    返回这个抽象路径名的绝对路径名字符串。
    返回这个抽象路径名的规范形式。
    返回这个抽象路径名的规范路径名字符串。
    long
    返回由这个抽象路径名命名的分区中未分配的字节数。
    返回由这个抽象路径名表示的文件或目录的名称。
    返回这个抽象路径名的父目录的路径名字符串,如果这个路径名没有命名父目录,则返回null
    返回这个抽象路径名的父目录的抽象路径名,如果这个路径名没有命名父目录,则返回null
    将这个抽象路径名转换为路径名字符串。
    long
    返回由这个抽象路径名命名的分区的大小。
    long
    返回由这个抽象路径名命名的分区中对这个虚拟机可用的字节数。
    int
    为这个抽象路径名计算一个哈希码。
    boolean
    测试这个抽象路径名是否是绝对的。
    boolean
    测试由这个抽象路径名表示的文件是否是一个目录。
    boolean
    isFile()
    测试由这个抽象路径名表示的文件是否是一个普通文件。
    boolean
    测试由这个抽象路径名表示的文件是否是一个隐藏文件。
    long
    返回由这个抽象路径名表示的文件的最后修改时间。
    long
    length()
    返回由这个抽象路径名表示的文件的长度。
    String[]
    list()
    返回由这个抽象路径名表示的目录中的文件和目录的名称数组。
    String[]
    list(FilenameFilter filter)
    返回由这个抽象路径名表示的目录中满足指定过滤器的文件和目录的名称数组。
    File[]
    返回由这个抽象路径名表示的目录中的文件的抽象路径名数组。
    File[]
    返回由这个抽象路径名表示的目录中满足指定过滤器的文件和目录的抽象路径名数组。
    File[]
    返回由这个抽象路径名表示的目录中满足指定过滤器的文件和目录的抽象路径名数组。
    static File[]
    列出可用的文件系统根目录。
    boolean
    mkdir()
    创建由这个抽象路径名命名的目录。
    boolean
    mkdirs()
    创建由这个抽象路径名命名的目录,包括任何必要但不存在的父目录。
    boolean
    renameTo(File dest)
    重命名由此抽象路径名表示的文件。
    boolean
    setExecutable(boolean executable)
    一个方便的方法,用于为此抽象路径名设置所有者的执行权限。
    boolean
    setExecutable(boolean executable, boolean ownerOnly)
    为此抽象路径名设置所有者或所有人的执行权限。
    boolean
    setLastModified(long time)
    设置由此抽象路径名命名的文件或目录的最后修改时间。
    boolean
    setReadable(boolean readable)
    一个方便的方法,用于为此抽象路径名设置所有者的读取权限。
    boolean
    setReadable(boolean readable, boolean ownerOnly)
    为此抽象路径名设置所有者或所有人的读取权限。
    boolean
    标记由此抽象路径名命名的文件或目录,以便只允许读取操作。
    boolean
    setWritable(boolean writable)
    一个方便的方法,用于为此抽象路径名设置所有者的写入权限。
    boolean
    setWritable(boolean writable, boolean ownerOnly)
    为此抽象路径名设置所有者或所有人的写入权限。
    toPath()
    返回从此抽象路径名构造的 java.nio.file.Path 对象。
    返回此抽象路径名的路径名字符串。
    URI
    toURI()
    构造代表此抽象路径名的 file: URI。
    URL
    toURL()
    已弃用。
    此方法不会自动转义URL中非法的字符。

    Methods declared in class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • separatorChar

      public static final char separatorChar
      系统相关的默认名称分隔符字符。此字段初始化为包含系统属性 file.separator 值的第一个字符。在 UNIX 系统上,此字段的值为 '/';在 Microsoft Windows 系统上,它是 '\\'
      参见:
    • separator

      public static final String separator
      系统相关的默认名称分隔符字符,以字符串形式表示。此字符串包含一个字符,即 separatorChar
    • pathSeparatorChar

      public static final char pathSeparatorChar
      系统相关的路径分隔符字符。此字段初始化为包含系统属性 path.separator 值的第一个字符。此字符用于在作为 路径列表 给定的文件序列中分隔文件名。在 UNIX 系统上,此字符为 ':';在 Microsoft Windows 系统上,它是 ';'
      参见:
    • pathSeparator

      public static final String pathSeparator
      系统相关的路径分隔符字符,以字符串形式表示。此字符串包含一个字符,即 pathSeparatorChar
  • Constructor Details

    • File

      public File(String pathname)
      通过将给定的路径名字符串转换为抽象路径名来创建一个新的 File 实例。如果给定的字符串为空字符串,则结果是空的抽象路径名。
      参数:
      pathname - 路径名字符串
      抛出:
      NullPointerException - 如果 pathname 参数为 null
    • File

      public File(String parent, String child)
      从父路径名字符串和子路径名字符串创建一个新的 File 实例。

      如果 parentnull,则新的 File 实例将被创建,就好像在给定的 child 路径名字符串上调用单参数 File 构造函数一样。

      否则,将假定 parent 路径名字符串表示一个目录,而 child 路径名字符串表示一个目录或文件。如果 child 路径名字符串是绝对的,则以系统相关的方式将其转换为相对路径名。如果 parent 是空字符串,则通过将 child 转换为抽象路径名并将结果解析为系统相关的默认目录来创建新的 File 实例。否则,将每个路径名字符串转换为抽象路径名,并将子抽象路径名解析为父路径名。

      参数:
      parent - 父路径名字符串
      child - 子路径名字符串
      抛出:
      NullPointerException - 如果 childnull
    • File

      public File(File parent, String child)
      从父抽象路径名和子路径名字符串创建一个新的 File 实例。

      如果 parentnull,则新的 File 实例将被创建,就好像在给定的 child 路径名字符串上调用单参数 File 构造函数一样。

      否则,将假定 parent 抽象路径名表示一个目录,而 child 路径名字符串表示一个目录或文件。如果 child 路径名字符串是绝对的,则以系统相关的方式将其转换为相对路径名。如果 parent 是空抽象路径名,则通过将 child 转换为抽象路径名并将结果解析为系统相关的默认目录来创建新的 File 实例。否则,将每个路径名字符串转换为抽象路径名,并将子抽象路径名解析为父路径名。

      参数:
      parent - 父抽象路径名
      child - 子路径名字符串
      抛出:
      NullPointerException - 如果 childnull
    • File

      public File(URI uri)
      通过将给定的 file: URI 转换为抽象路径名来创建一个新的 File 实例。

      file: URI 的确切形式是系统相关的,因此此构造函数执行的转换也是系统相关的。

      对于给定的抽象路径名 f,可以保证

      new File( f.toURI()).equals( f.getAbsoluteFile())
      只要原始抽象路径名、URI 和新抽象路径名都是在同一个 Java 虚拟机中创建的(可能是不同调用中)。然而,当在一个操作系统上的虚拟机中创建的 file: URI 被转换为在另一个操作系统上的虚拟机中的抽象路径名时,通常不会保持这种关系。
      参数:
      uri - 具有方案等于 "file"、非空路径组件和未定义授权、查询和片段组件的绝对分层 URI
      抛出:
      NullPointerException - 如果 urinull
      IllegalArgumentException - 如果参数的前提条件不成立
      自:
      1.4
      参见:
  • Method Details

    • getName

      public String getName()
      返回由此抽象路径名表示的文件或目录的名称。这只是路径名的名称序列中的最后一个名称。如果路径名的名称序列为空,则返回空字符串。
      返回:
      由此抽象路径名表示的文件或目录的名称,如果此路径名的名称序列为空,则返回空字符串
    • getParent

      public String getParent()
      返回此抽象路径名的父目录的路径名字符串,如果此路径名不命名父目录,则返回 null

      抽象路径名的父目录由路径名的前缀(如果有)和路径名的名称序列中除最后一个名称外的每个名称组成。如果名称序列为空,则路径名不命名父目录。

      返回:
      由此抽象路径名命名的父目录的路径名字符串,如果此路径名不命名父目录,则返回 null
    • getParentFile

      public File getParentFile()
      返回此抽象路径名的父目录的抽象路径名,如果此路径名不命名父目录,则返回 null

      抽象路径名的父目录由路径名的前缀(如果有)和路径名的名称序列中除最后一个名称外的每个名称组成。如果名称序列为空,则路径名不命名父目录。

      返回:
      由此抽象路径名命名的父目录的抽象路径名,如果此路径名不命名父目录,则返回 null
      自:
      1.2
    • getPath

      public String getPath()
      将此抽象路径名转换为路径名字符串。生成的字符串使用 默认名称分隔符字符 来分隔名称序列中的名称。
      返回:
      此抽象路径名的字符串形式
    • isAbsolute

      public boolean isAbsolute()
      测试此抽象路径名是否为绝对路径名。绝对路径名的定义是系统相关的。在 UNIX 系统上,如果路径名的前缀是 "/",则路径名是绝对的。在 Microsoft Windows 系统上,如果路径名的前缀是驱动器说明符后跟 "\\",或者前缀是 "\\\\",则路径名是绝对的。
      返回:
      如果此抽象路径名是绝对路径名,则返回 true,否则返回 false
    • getAbsolutePath

      public String getAbsolutePath()
      返回此抽象路径名的绝对路径名字符串。

      如果此抽象路径名已经是绝对路径名,则路径名字符串将简单地返回,就像通过 getPath() 方法一样。如果此抽象路径名是空的抽象路径名,则返回当前用户目录的路径名字符串,该目录由系统属性 user.dir 命名。否则,此路径名将以系统相关的方式解析。在 UNIX 系统上,通过将相对路径名解析为当前用户目录来使相对路径名变为绝对路径名。在 Microsoft Windows 系统上,通过将相对路径名解析为由路径名命名的驱动器的当前目录(如果有)来使相对路径名变为绝对路径名;如果没有,则解析为当前用户目录。

      返回:
      返回表示与此抽象路径名相同文件或目录的绝对路径名字符串
      抛出:
      SecurityException - 如果无法访问所需的系统属性值。
      参见:
    • getAbsoluteFile

      public File getAbsoluteFile()
      返回此抽象路径名的绝对形式。等效于 new File(this.getAbsolutePath())
      返回:
      返回表示与此抽象路径名相同文件或目录的绝对抽象路径名
      抛出:
      SecurityException - 如果无法访问所需的系统属性值。
      自:
      1.2
    • getCanonicalPath

      public String getCanonicalPath() throws IOException
      返回此抽象路径名的规范路径名字符串。

      规范路径名既是绝对的又是唯一的。规范形式的精确定义取决于系统。如果需要,此方法首先将此路径名转换为绝对形式,就像调用 getAbsolutePath() 方法一样,然后以系统相关的方式将其映射到其唯一形式。这通常涉及从路径名中删除冗余名称,解析符号链接(在UNIX平台上),并将驱动器字母转换为标准大小写(在Microsoft Windows平台上)。

      每个表示现有文件或目录的路径名都有一个唯一的规范形式。每个表示不存在的文件或目录的路径名也有一个唯一的规范形式。表示不存在的文件或目录的路径名的规范形式可能与在创建文件或目录之后相同路径名的规范形式不同。同样,表示现有文件或目录的路径名的规范形式可能与在删除文件或目录之后相同路径名的规范形式不同。

      返回:
      返回表示与此抽象路径名相同文件或目录的规范路径名字符串
      抛出:
      IOException - 如果发生I/O错误,因为构造规范路径名可能需要文件系统查询
      SecurityException - 如果无法访问所需的系统属性值,或者如果存在安全管理器并且其 SecurityManager.checkRead(java.io.FileDescriptor) 方法拒绝对文件的读取访问
      自:
      1.1
      参见:
    • getCanonicalFile

      public File getCanonicalFile() throws IOException
      返回此抽象路径名的规范形式。等效于 new File(this.getCanonicalPath())
      返回:
      返回表示与此抽象路径名相同文件或目录的规范路径名字符串
      抛出:
      IOException - 如果发生I/O错误,因为构造规范路径名可能需要文件系统查询
      SecurityException - 如果无法访问所需的系统属性值,或者如果存在安全管理器并且其 SecurityManager.checkRead(java.io.FileDescriptor) 方法拒绝对文件的读取访问
      自:
      1.2
      参见:
    • toURL

      @Deprecated public URL toURL() throws MalformedURLException
      Deprecated.
      This method does not automatically escape characters that are illegal in URLs. It is recommended that new code convert an abstract pathname into a URL by first converting it into a URI, via the toURI method, and then converting the URI into a URL via the URI.toURL method.
      将此抽象路径名转换为 file: URL。URL的确切形式取决于系统。如果可以确定由此抽象路径名表示的文件是目录,则生成的URL将以斜杠结尾。
      返回:
      表示等效文件URL的URL对象
      抛出:
      MalformedURLException - 如果无法将路径解析为URL
      自:
      1.2
      参见:
    • toURI

      public URI toURI()
      构造表示此抽象路径名的 file: URI。

      URI的确切形式取决于系统。如果可以确定由此抽象路径名表示的文件是目录,则生成的URI将以斜杠结尾。

      对于给定的抽象路径名 f,可以保证

      new File( f.toURI()).equals(  f.getAbsoluteFile())
      只要原始抽象路径名、URI和新抽象路径名都是在同一个Java虚拟机中创建的(可能是不同的调用)。但是,由于抽象路径名的系统相关性,当在一个操作系统上的虚拟机中创建的 file: URI 转换为在另一个操作系统上的虚拟机中的抽象路径名时,通常不会保持此关系。

      请注意,当此抽象路径名表示UNC路径名时,UNC 的所有组件(包括服务器名称组件)都将被编码在 URI 路径中。权限组件未定义,这意味着它表示为 nullPath 类定义了 toUri 方法,以在生成的 URI 的权限组件中编码服务器名称。可以使用 toPath 方法获取表示此抽象路径名的 Path

      返回:
      具有与 "file" 相等方案的绝对分层 URI,路径表示此抽象路径名,未定义权限、查询和片段组件
      抛出:
      SecurityException - 如果无法访问所需的系统属性值。
      自:
      1.4
      参见:
    • canRead

      public boolean canRead()
      测试应用程序是否可以读取由此抽象路径名表示的文件。在某些平台上,可能可以以特权启动Java虚拟机,使其能够读取标记为不可读的文件。因此,即使文件没有读取权限,此方法可能返回 true
      返回:
      仅当应用程序可以读取此抽象路径名指定的文件且文件存在时返回 true;否则返回 false
      抛出:
      SecurityException - 如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件的读取访问
    • canWrite

      public boolean canWrite()
      测试应用程序是否可以修改由此抽象路径名表示的文件。在某些平台上,可能可以以特权启动Java虚拟机,使其能够修改标记为只读的文件。因此,即使文件标记为只读,此方法可能返回 true
      返回:
      仅当文件系统实际包含由此抽象路径名表示的文件且应用程序被允许写入文件时返回 true;否则返回 false
      抛出:
      SecurityException - 如果存在安全管理器并且其 SecurityManager.checkWrite(java.lang.String) 方法拒绝对文件的写入访问
    • exists

      public boolean exists()
      测试由此抽象路径名表示的文件或目录是否存在。
      返回:
      仅当由此抽象路径名表示的文件或目录存在时返回 true;否则返回 false
      抛出:
      SecurityException - 如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件或目录的读取访问
    • isDirectory

      public boolean isDirectory()
      测试由此抽象路径名表示的文件是否为目录。

      如果需要区分I/O异常和文件不是目录的情况,或者同时需要同一文件的多个属性,则可以使用 Files.readAttributes 方法。

      返回:
      仅当由此抽象路径名表示的文件存在且为目录时返回 true;否则返回 false
      抛出:
      SecurityException - 如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件的读取访问
    • isFile

      public boolean isFile()
      检查此抽象路径名表示的文件是否为普通文件。如果文件不是目录,并且满足其他系统相关标准,则文件是普通的。Java应用程序创建的任何非目录文件都保证是普通文件。

      如果需要区分I/O异常和文件不是普通文件的情况,或者同时需要同一文件的多个属性,则可以使用Files.readAttributes方法。

      返回值:
      true表示仅当此抽象路径名表示的文件存在为普通文件时;否则返回false
      抛出:
      SecurityException - 如果存在安全管理器且其SecurityManager.checkRead(java.lang.String)方法拒绝对文件的读取访问
    • isHidden

      public boolean isHidden()
      检查此抽象路径名命名的文件是否为隐藏文件。 隐藏的确切定义取决于系统。在UNIX系统上,如果文件名以句点字符('.')开头,则文件被视为隐藏。在Microsoft Windows系统上,如果文件在文件系统中被标记为隐藏,则被视为隐藏文件。
      返回值:
      true表示仅当此抽象路径名表示的文件根据底层平台的约定是隐藏的时
      抛出:
      SecurityException - 如果存在安全管理器且其SecurityManager.checkRead(java.lang.String)方法拒绝对文件的读取访问
      自 JDK 版本:
      1.2
    • lastModified

      public long lastModified()
      返回此抽象路径名表示的文件上次修改的时间。
      API 注释:
      返回值的时间单位是毫秒,但值的粒度取决于底层文件系统,可能更大。例如,一些文件系统使用以秒为单位的时间戳。

      如果需要区分I/O异常和返回0L的情况,或者同时需要同一文件的多个属性,或者需要上次访问时间或创建时间,则可以使用Files.readAttributes方法。但如果只需要上次修改时间,则可以使用Files.getLastModifiedTime方法。

      返回值:
      一个long值,表示文件上次修改的时间,以自 1970 年 1 月 1 日 00:00:00 GMT(格林尼治时间)起的毫秒数,如果文件不存在或发生I/O错误,则返回0L。该值可能为负,表示在时代之前的毫秒数
      抛出:
      SecurityException - 如果存在安全管理器且其SecurityManager.checkRead(java.lang.String)方法拒绝对文件的读取访问
    • length

      public long length()
      返回此抽象路径名表示的文件的长度。如果此路径名表示目录,则返回值未指定。

      如果需要区分I/O异常和返回0L的情况,或者同时需要同一文件的多个属性,则可以使用Files.readAttributes方法。

      返回值:
      此抽象路径名表示的文件的长度(以字节为单位),如果文件不存在,则返回0L。某些操作系统可能对表示设备或管道等系统相关实体的路径名返回0L
      抛出:
      SecurityException - 如果存在安全管理器且其SecurityManager.checkRead(java.lang.String)方法拒绝对文件的读取访问
    • createNewFile

      public boolean createNewFile() throws IOException
      如果尚未存在具有此名称的文件,则以此抽象路径名命名的新文件将被原子方式创建为空文件。对文件的存在性进行检查以及如果文件不存在则创建文件是一个原子操作,与可能影响文件的所有其他文件系统活动一起。

      注意:不应将此方法用于文件锁定,因为无法可靠地使生成的协议正常工作。应改用FileLock功能。

      返回值:
      如果命名文件不存在并且成功创建,则返回true;如果命名文件已经存在,则返回false
      抛出:
      IOException - 如果发生I/O错误
      SecurityException - 如果存在安全管理器且其SecurityManager.checkWrite(java.lang.String)方法拒绝对文件的写入访问
      自 JDK 版本:
      1.2
    • delete

      public boolean delete()
      删除此抽象路径名表示的文件或目录。如果此路径名表示目录,则必须为空目录才能删除该目录。

      请注意,Files类定义了delete方法,当无法删除文件时会抛出IOException。这对于错误报告和诊断无法删除文件的原因很有用。

      返回值:
      如果文件或目录成功删除,则返回true;否则返回false
      抛出:
      SecurityException - 如果存在安全管理器且其SecurityManager.checkDelete(java.lang.String)方法拒绝对文件的删除访问
    • deleteOnExit

      public void deleteOnExit()
      请求在虚拟机终止时删除此抽象路径名表示的文件或目录。文件(或目录)按照注册顺序的相反顺序删除。调用此方法删除已经注册删除的文件或目录不会产生任何效果。仅当按照Java语言规范定义的虚拟机正常终止时,才会尝试删除文件。

      一旦请求删除,就无法取消请求。因此,应谨慎使用此方法。

      注意:不应将此方法用于文件锁定,因为无法可靠地使生成的协议正常工作。应改用FileLock功能。

      抛出:
      SecurityException - 如果存在安全管理器且其SecurityManager.checkDelete(java.lang.String)方法拒绝对文件的删除访问
      自 JDK 版本:
      1.2
      参见:
    • list

      public String[] list()
      返回此抽象路径名表示的目录中的文件和目录的名称数组。

      如果此抽象路径名不表示目录,则此方法返回null。否则,返回一个字符串数组,其中每个字符串对应目录中的每个文件或目录。不包括表示目录本身和父目录的名称在结果中。每个字符串是文件名而不是完整路径。

      不能保证结果数组中的名称字符串以任何特定顺序出现;特别是不能保证按字母顺序出现。

      请注意,Files类定义了newDirectoryStream方法,用于打开目录并遍历目录中文件的名称。在处理非常大的目录时,可能使用更少的资源,并且在处理远程目录时可能更具响应性。

      返回值:
      返回此抽象路径名表示的目录中的文件和目录的名称数组。如果目录为空,则数组为空。如果此抽象路径名不表示目录,或者发生I/O错误,则返回null
      抛出:
      SecurityException - 如果存在安全管理器且其SecurityManager.checkRead(String)方法拒绝对目录的读取访问
    • list

      public String[] list(FilenameFilter filter)
      返回此抽象路径名表示的目录中满足指定过滤器的文件和目录的名称数组。此方法的行为与list()方法相同,只是返回数组中的字符串必须满足过滤器。如果给定的filternull,则接受所有名称。否则,当在此抽象路径名上调用过滤器的FilenameFilter.accept(File, String)方法时,如果结果为true,则名称满足过滤器。
      参数:
      filter - 文件名过滤器
      返回:
      一个字符串数组,命名了此抽象路径名所表示的目录中被给定filter接受的文件和目录。如果目录为空或者没有任何名称被过滤器接受,则数组将为空。如果此抽象路径名不表示目录,或者发生I/O错误,则返回null
      抛出:
      SecurityException - 如果存在安全管理器且其SecurityManager.checkRead(String)方法拒绝对目录的读取访问
      参见:
    • listFiles

      public File[] listFiles()
      返回一个命名了此抽象路径名所表示的目录中文件的抽象路径名数组。

      如果此抽象路径名不表示目录,则此方法返回null。否则,返回一个File对象数组,每个文件或目录在数组中对应一个对象。不包括表示目录本身和目录的父目录的路径名在结果中。每个生成的抽象路径名都是使用此抽象路径名和File(File, String)构造函数构造的。因此,如果此路径名是绝对路径,则每个生成的路径名也是绝对路径;如果此路径名是相对路径,则每个生成的路径名将相对于相同的目录。

      不能保证结果数组中的名称字符串以任何特定顺序出现;特别地,不能保证它们按字母顺序出现。

      请注意,Files类定义了newDirectoryStream方法,用于打开目录并遍历目录中文件的名称。在处理非常大的目录时,这可能会使用更少的资源。

      返回:
      一个命名了此抽象路径名所表示的目录中文件和目录的抽象路径名数组。如果目录为空,则数组为空。如果此抽象路径名不表示目录,或者发生I/O错误,则返回null
      抛出:
      SecurityException - 如果存在安全管理器且其SecurityManager.checkRead(String)方法拒绝对目录的读取访问
      自版本:
      1.2
    • listFiles

      public File[] listFiles(FilenameFilter filter)
      返回一个命名了此抽象路径名所表示的目录中满足指定过滤器的文件和目录的抽象路径名数组。此方法的行为与listFiles()方法相同,只是返回数组中的路径名必须满足过滤器。如果给定的filternull,则接受所有路径名。否则,只有当在此抽象路径名上调用过滤器的FilenameFilter.accept(File, String)方法并且文件或目录的名称满足过滤器时,路径名才满足过滤器。
      参数:
      filter - 文件名过滤器
      返回:
      一个命名了此抽象路径名所表示的目录中文件和目录的抽象路径名数组。如果目录为空,则数组为空。如果此抽象路径名不表示目录,或者发生I/O错误,则返回null
      抛出:
      SecurityException - 如果存在安全管理器且其SecurityManager.checkRead(String)方法拒绝对目录的读取访问
      自版本:
      1.2
      参见:
    • listFiles

      public File[] listFiles(FileFilter filter)
      返回一个命名了此抽象路径名所表示的目录中满足指定过滤器的文件和目录的抽象路径名数组。此方法的行为与listFiles()方法相同,只是返回数组中的路径名必须满足过滤器。如果给定的filternull,则接受所有路径名。否则,只有当在此抽象路径名上调用过滤器的FileFilter.accept(File)方法并且路径名满足过滤器时,路径名才满足过滤器。
      参数:
      filter - 文件过滤器
      返回:
      一个命名了此抽象路径名所表示的目录中文件和目录的抽象路径名数组。如果目录为空,则数组为空。如果此抽象路径名不表示目录,或者发生I/O错误,则返回null
      抛出:
      SecurityException - 如果存在安全管理器且其SecurityManager.checkRead(String)方法拒绝对目录的读取访问
      自版本:
      1.2
      参见:
    • mkdir

      public boolean mkdir()
      创建由此抽象路径名命名的目录。
      返回:
      true仅当目录已创建时;否则返回false
      抛出:
      SecurityException - 如果存在安全管理器且其SecurityManager.checkWrite(java.lang.String)方法不允许创建指定名称的目录
    • mkdirs

      public boolean mkdirs()
      创建由此抽象路径名命名的目录,包括所有必要但不存在的父目录。请注意,如果此操作失败,则可能已成功创建某些必要的父目录。
      返回:
      true仅当目录及所有必要的父目录已创建时;否则返回false
      抛出:
      SecurityException - 如果存在安全管理器且其SecurityManager.checkRead(java.lang.String)方法不允许验证指定目录及所有必要的父目录的存在;或者如果SecurityManager.checkWrite(java.lang.String)方法不允许创建指定目录及所有必要的父目录
    • renameTo

      public boolean renameTo(File dest)
      重命名由此抽象路径名表示的文件。

      此方法的许多行为方面在本质上依赖于平台:重命名操作可能无法将文件从一个文件系统移动到另一个文件系统,可能不是原子操作,如果目标抽象路径名已存在文件,则可能不会成功。应始终检查返回值,以确保重命名操作成功。由于File的实例是不可变的,因此此File对象不会更改为命名目标文件或目录。

      请注意,Files类定义了move方法,以平台独立的方式移动或重命名文件。

      参数:
      dest - 命名文件的新抽象路径名
      返回:
      true仅当重命名成功时;否则返回false
      抛出:
      SecurityException - 如果存在安全管理器且其SecurityManager.checkWrite(java.lang.String)方法拒绝对旧路径名或新路径名的写访问
      NullPointerException - 如果参数destnull
    • setLastModified

      public boolean setLastModified(long time)
      设置由此抽象路径名命名的文件或目录的最后修改时间。

      所有平台都支持文件修改时间精确到最近的秒,但有些提供更高的精度。参数将被截断以适应支持的精度。如果操作成功且文件没有发生其他操作,则下一次调用lastModified()方法将返回传递给此方法的(可能被截断的)time参数。

      参数:
      time - 新的最后修改时间,以自1970年1月1日00:00:00 GMT起的毫秒数表示
      返回:
      true仅当操作成功时;否则返回false
      抛出:
      IllegalArgumentException - 如果参数为负数
      SecurityException - 如果存在安全管理器且其SecurityManager.checkWrite(java.lang.String)方法拒绝对命名文件的写访问
      自版本:
      1.2
    • setReadOnly

      public boolean setReadOnly()
      标记此抽象路径名表示的文件或目录,以便仅允许读取操作。调用此方法后,文件或目录将不会更改,直到它被删除或标记为允许写访问。在某些平台上,可能可以以特殊权限启动Java虚拟机,以允许修改标记为只读的文件。只读文件或目录是否可以被删除取决于底层系统。
      返回值:
      true 仅当操作成功时返回; 否则返回false
      抛出:
      SecurityException - 如果存在安全管理器并且其SecurityManager.checkWrite(java.lang.String)方法拒绝对命名文件的写访问
      自版本:
      1.2
    • setWritable

      public boolean setWritable(boolean writable, boolean ownerOnly)
      设置此抽象路径名的所有者或所有人的写权限。在某些平台上,可能可以以特殊权限启动Java虚拟机,以允许修改禁止写操作的文件。

      Files类定义了操作文件属性的方法,包括文件权限。在需要更精细地操作文件权限时可以使用此类。

      参数:
      writable - 如果为true,则设置访问权限以允许写操作; 如果为false,则禁止写操作
      ownerOnly - 如果为true,则写权限仅适用于所有者的写权限; 否则,它适用于所有人。如果底层文件系统无法区分所有者的写权限和其他人的写权限,则权限将适用于所有人,而不考虑此值。
      返回值:
      true 仅当操作成功时返回。如果用户没有权限更改此抽象路径名的访问权限,则操作将失败。
      抛出:
      SecurityException - 如果存在安全管理器并且其SecurityManager.checkWrite(java.lang.String)方法拒绝对命名文件的写访问
      自版本:
      1.6
    • setWritable

      public boolean setWritable(boolean writable)
      设置此抽象路径名的所有者的写权限的便利方法。在某些平台上,可能可以以特殊权限启动Java虚拟机,以允许修改禁止写操作的文件。 file.setWritable(arg)形式调用此方法的行为与调用方式完全相同

          file.setWritable(arg, true)
      
      参数:
      writable - 如果为true,则设置访问权限以允许写操作; 如果为false,则禁止写操作
      返回值:
      true 仅当操作成功时返回。如果用户没有权限更改此抽象路径名的访问权限,则操作将失败。
      抛出:
      SecurityException - 如果存在安全管理器并且其SecurityManager.checkWrite(java.lang.String)方法拒绝对文件的写访问
      自版本:
      1.6
    • setReadable

      public boolean setReadable(boolean readable, boolean ownerOnly)
      设置此抽象路径名的所有者或所有人的读权限。在某些平台上,可能可以以特殊权限启动Java虚拟机,以允许读取标记为不可读的文件。

      Files类定义了操作文件属性的方法,包括文件权限。在需要更精细地操作文件权限时可以使用此类。

      参数:
      readable - 如果为true,则设置访问权限以允许读操作; 如果为false,则禁止读操作
      ownerOnly - 如果为true,则读权限仅适用于所有者的读权限; 否则,它适用于所有人。如果底层文件系统无法区分所有者的读权限和其他人的读权限,则权限将适用于所有人,而不考虑此值。
      返回值:
      true 仅当操作成功时返回。如果用户没有权限更改此抽象路径名的访问权限,则操作将失败。如果readablefalse且底层文件系统不实现读权限,则操作将失败。
      抛出:
      SecurityException - 如果存在安全管理器并且其SecurityManager.checkWrite(java.lang.String)方法拒绝对文件的写访问
      自版本:
      1.6
    • setReadable

      public boolean setReadable(boolean readable)
      设置此抽象路径名的所有者的读权限的便利方法。在某些平台上,可能可以以特殊权限启动Java虚拟机,以允许读取标记为不可读的文件。 file.setReadable(arg)形式调用此方法的行为与调用方式完全相同

          file.setReadable(arg, true)
      
      参数:
      readable - 如果为true,则设置访问权限以允许读操作; 如果为false,则禁止读操作
      返回值:
      true 仅当操作成功时返回。如果用户没有权限更改此抽象路径名的访问权限,则操作将失败。如果readablefalse且底层文件系统不实现读权限,则操作将失败。
      抛出:
      SecurityException - 如果存在安全管理器并且其SecurityManager.checkWrite(java.lang.String)方法拒绝对文件的写访问
      自版本:
      1.6
    • setExecutable

      public boolean setExecutable(boolean executable, boolean ownerOnly)
      设置此抽象路径名的所有者或所有人的执行权限。在某些平台上,可能可以以特殊权限启动Java虚拟机,以允许执行未标记为可执行的文件。

      Files类定义了操作文件属性的方法,包括文件权限。在需要更精细地操作文件权限时可以使用此类。

      参数:
      executable - 如果为true,则设置访问权限以允许执行操作; 如果为false,则禁止执行操作
      ownerOnly - 如果为true,则执行权限仅适用于所有者的执行权限; 否则,它适用于所有人。如果底层文件系统无法区分所有者的执行权限和其他人的执行权限,则权限将适用于所有人,而不考虑此值。
      返回值:
      true 仅当操作成功时返回。如果用户没有权限更改此抽象路径名的访问权限,则操作将失败。如果executablefalse且底层文件系统不实现执行权限,则操作将失败。
      抛出:
      SecurityException - 如果存在安全管理器并且其SecurityManager.checkWrite(java.lang.String)方法拒绝对文件的写访问
      自版本:
      1.6
    • setExecutable

      public boolean setExecutable(boolean executable)
      设置此抽象路径名的所有者的执行权限的便利方法。在某些平台上,可能可以以特殊权限启动Java虚拟机,以允许执行未标记为可执行的文件。 file.setExcutable(arg)形式调用此方法的行为与调用方式完全相同

          file.setExecutable(arg, true)
      
      参数:
      executable - 如果为true,则设置访问权限以允许执行操作; 如果为false,则禁止执行操作
      返回值:
      true 仅当操作成功时返回。如果用户没有权限更改此抽象路径名的访问权限,则操作将失败。如果executablefalse且底层文件系统不实现执行权限,则操作将失败。
      抛出:
      SecurityException - 如果存在安全管理器并且其SecurityManager.checkWrite(java.lang.String)方法拒绝对文件的写访问
      自版本:
      1.6
    • canExecute

      public boolean canExecute()
      测试应用程序是否可以执行此抽象路径名表示的文件。在某些平台上,可能可以以特殊权限启动Java虚拟机,以允许执行未标记为可执行的文件。因此,即使文件没有执行权限,此方法可能返回true
      Returns:
      true if and only if the abstract pathname exists and the application is allowed to execute the file
      Throws:
      SecurityException - If a security manager exists and its SecurityManager.checkExec(java.lang.String) method denies execute access to the file
      Since:
      1.6
    • listRoots

      public static File[] listRoots()
      List the available filesystem roots.

      A particular Java platform may support zero or more hierarchically-organized file systems. Each file system has a root directory from which all other files in that file system can be reached.

      This method returns an array of File objects that denote the root directories of the available filesystem roots. It is guaranteed that the canonical pathname of any file physically present on the local machine will begin with one of the roots returned by this method. There is no guarantee that a root directory can be accessed.

      Unlike most methods in this class, this method does not throw security exceptions. If a security manager exists and its SecurityManager.checkRead(String) method denies read access to a particular root directory, then that directory will not appear in the result.

      Implementation Note:
      Windows platforms, for example, have a root directory for each active drive; UNIX platforms have a single root directory, namely "/". The set of filesystem roots is affected by various system-level operations such as the disconnecting or unmounting of physical or virtual disk drives.

      The canonical pathname of a file that resides on some other machine and is accessed via a remote-filesystem protocol such as SMB or NFS may or may not begin with one of the roots returned by this method. If the pathname of a remote file is syntactically indistinguishable from the pathname of a local file then it will begin with one of the roots returned by this method. Thus, for example, File objects denoting the root directories of the mapped network drives of a Windows platform will be returned by this method, while File objects containing UNC pathnames will not be returned by this method.

      Returns:
      An array of File objects denoting the available filesystem roots, or null if the set of roots could not be determined. The array will be empty if there are no filesystem roots.
      Since:
      1.2
      See Also:
    • getTotalSpace

      public long getTotalSpace()
      Returns the size of the partition named by this abstract pathname. If the total number of bytes in the partition is greater than Long.MAX_VALUE, then Long.MAX_VALUE will be returned.
      Returns:
      The size, in bytes, of the partition or 0L if this abstract pathname does not name a partition or if the size cannot be obtained
      Throws:
      SecurityException - If a security manager has been installed and it denies RuntimePermission("getFileSystemAttributes") or its SecurityManager.checkRead(String) method denies read access to the file named by this abstract pathname
      Since:
      1.6
      See Also:
    • getFreeSpace

      public long getFreeSpace()
      Returns the number of unallocated bytes in the partition named by this abstract path name. If the number of unallocated bytes in the partition is greater than Long.MAX_VALUE, then Long.MAX_VALUE will be returned.

      The returned number of unallocated bytes is a hint, but not a guarantee, that it is possible to use most or any of these bytes. The number of unallocated bytes is most likely to be accurate immediately after this call. It is likely to be made inaccurate by any external I/O operations including those made on the system outside of this virtual machine. This method makes no guarantee that write operations to this file system will succeed.

      Returns:
      The number of unallocated bytes on the partition or 0L if the abstract pathname does not name a partition or if this number cannot be obtained. This value will be less than or equal to the total file system size returned by getTotalSpace().
      Throws:
      SecurityException - If a security manager has been installed and it denies RuntimePermission("getFileSystemAttributes") or its SecurityManager.checkRead(String) method denies read access to the file named by this abstract pathname
      Since:
      1.6
      See Also:
    • getUsableSpace

      public long getUsableSpace()
      Returns the number of bytes available to this virtual machine on the partition named by this abstract pathname. If the number of available bytes in the partition is greater than Long.MAX_VALUE, then Long.MAX_VALUE will be returned. When possible, this method checks for write permissions and other operating system restrictions and will therefore usually provide a more accurate estimate of how much new data can actually be written than getFreeSpace().

      The returned number of available bytes is a hint, but not a guarantee, that it is possible to use most or any of these bytes. The number of available bytes is most likely to be accurate immediately after this call. It is likely to be made inaccurate by any external I/O operations including those made on the system outside of this virtual machine. This method makes no guarantee that write operations to this file system will succeed.

      Returns:
      The number of available bytes on the partition or 0L if the abstract pathname does not name a partition or if this number cannot be obtained. On systems where this information is not available, this method will be equivalent to a call to getFreeSpace().
      Throws:
      SecurityException - If a security manager has been installed and it denies RuntimePermission("getFileSystemAttributes") or its SecurityManager.checkRead(String) method denies read access to the file named by this abstract pathname
      Since:
      1.6
      See Also:
    • createTempFile

      public static File createTempFile(String prefix, String suffix, File directory) throws IOException

      Creates a new empty file in the specified directory, using the given prefix and suffix strings to generate its name. If this method returns successfully then it is guaranteed that:

      1. The file denoted by the returned abstract pathname did not exist before this method was invoked, and
      2. Neither this method nor any of its variants will return the same abstract pathname again in the current invocation of the virtual machine.
      This method provides only part of a temporary-file facility. To arrange for a file created by this method to be deleted automatically, use the deleteOnExit() method.

      The prefix argument must be at least three characters long. It is recommended that the prefix be a short, meaningful string such as "hjb" or "mail". The suffix argument may be null, in which case the suffix ".tmp" will be used.

      To create the new file, the prefix and the suffix may first be adjusted to fit the limitations of the underlying platform. If the prefix is too long then it will be truncated, but its first three characters will always be preserved. If the suffix is too long then it too will be truncated, but if it begins with a period character ('.') then the period and the first three characters following it will always be preserved. Once these adjustments have been made the name of the new file will be generated by concatenating the prefix, five or more internally-generated characters, and the suffix.

      If the directory argument is null then the system-dependent default temporary-file directory will be used. The default temporary-file directory is specified by the system property java.io.tmpdir. On UNIX systems the default value of this property is typically "/tmp" or "/var/tmp"; on Microsoft Windows systems it is typically "C:\\WINNT\\TEMP". A different value may be given to this system property when the Java virtual machine is invoked, but programmatic changes to this property are not guaranteed to have any effect upon the temporary directory used by this method.

      If the directory argument is not null and its abstract pathname is valid and denotes an existing, writable directory, then the file will be created in that directory. Otherwise the file will not be created and an IOException will be thrown. Under no circumstances will a directory be created at the location specified by the directory argument.

      参数:
      prefix - 用于生成文件名的前缀字符串;必须至少三个字符长
      suffix - 用于生成文件名的后缀字符串;可以为null,在这种情况下将使用后缀".tmp"
      directory - 要创建文件的目录,如果要使用默认临时文件目录,则为null
      返回:
      表示新创建的空文件的抽象路径名
      抛出:
      IllegalArgumentException - 如果prefix参数包含少于三个字符
      IOException - 如果无法创建文件
      SecurityException - 如果存在安全管理器且其SecurityManager.checkWrite(java.lang.String)方法不允许创建文件
      自版本:
      1.2
    • createTempFile

      public static File createTempFile(String prefix, String suffix) throws IOException
      在默认临时文件目录中创建一个空文件,使用给定的前缀和后缀生成其名称。调用此方法等效于调用createTempFile(prefix, suffix, null)

      Files.createTempFile方法提供了在临时文件目录中创建空文件的另一种方法。通过该方法创建的文件可能具有比此方法创建的文件更严格的访问权限,因此更适合于对安全性敏感的应用程序。

      参数:
      prefix - 用于生成文件名的前缀字符串;必须至少三个字符长
      suffix - 用于生成文件名的后缀字符串;可以为null,在这种情况下将使用后缀".tmp"
      返回:
      表示新创建的空文件的抽象路径名
      抛出:
      IllegalArgumentException - 如果prefix参数包含少于三个字符
      IOException - 如果无法创建文件
      SecurityException - 如果存在安全管理器且其SecurityManager.checkWrite(java.lang.String)方法不允许创建文件
      自版本:
      1.2
      另请参阅:
    • compareTo

      public int compareTo(File pathname)
      按字典顺序比较两个抽象路径名。此方法定义的排序取决于底层系统。在UNIX系统上,比较路径名时字母大小写是敏感的;在Microsoft Windows系统上则不敏感。
      指定者:
      compareTo 在接口 Comparable<File>
      参数:
      pathname - 要与此抽象路径名进行比较的抽象路径名
      返回:
      如果参数等于此抽象路径名,则为零;如果此抽象路径名在字典顺序上小于参数,则为负值;如果此抽象路径名在字典顺序上大于参数,则为正值
      自版本:
      1.2
    • equals

      public boolean equals(Object obj)
      测试此抽象路径名与给定对象是否相等。仅当参数不为null且为与此抽象路径名相同的抽象路径名时,返回true。两个抽象路径名是否相等取决于底层操作系统。在UNIX系统上,比较路径名时字母大小写是敏感的;在Microsoft Windows系统上则不敏感。
      覆盖:
      equals 在类 Object
      API注释:
      此方法仅测试抽象路径名是否相等;它不访问文件系统,也不需要文件存在。
      参数:
      obj - 要与此抽象路径名进行比较的对象
      返回:
      如果对象相同,则为true;否则为false
      另请参阅:
    • hashCode

      public int hashCode()
      为此抽象路径名计算哈希码。因为抽象路径名的相等性取决于系统,所以它们的哈希码的计算也是系统相关的。在UNIX系统上,抽象路径名的哈希码等于其路径名字符串的哈希码与十进制值1234321的异或。在Microsoft Windows系统上,哈希码等于其路径名字符串转换为小写后的哈希码与十进制值1234321的异或。在将路径名字符串转换为小写时不考虑区域设置。
      覆盖:
      hashCode 在类 Object
      返回:
      此抽象路径名的哈希码
      另请参阅:
    • toString

      public String toString()
      返回此抽象路径名的路径名字符串。这只是由getPath()方法返回的字符串。
      覆盖:
      toString 在类 Object
      返回:
      此抽象路径名的字符串形式
    • toPath

      public Path toPath()
      返回从此抽象路径名构造的java.nio.file.Path对象。生成的Pathdefault-filesystem关联。

      第一次调用此方法时,其作用就好像调用它等同于评估表达式:

              FileSystems.getDefault().getPath(this.getPath());
      
      后续调用此方法将返回相同的Path

      如果此抽象路径名为空抽象路径名,则此方法返回一个Path,可用于访问当前用户目录。

      返回:
      从此抽象路径名构造的Path
      抛出:
      InvalidPathException - 如果无法从抽象路径构造Path对象(请参阅FileSystem.getPath
      自版本:
      1.7
      另请参阅: