模块  java.base
软件包  java.io

Class File

  • 实现的所有接口
    SerializableComparable<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)可以包含多个分区。 该对象(如果有)将由此路径名的绝对形式的某个祖先驻留在分区named上

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

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

    java.nio.file包的互操作性

    java.nio.file包定义了Java虚拟机访问文件,文件属性和文件系统的接口和类。 此API可用于克服java.io.File类的许多限制。 toPath方法可用于获得Path ,其使用由File对象表示的抽象路径来定位文件。 生成的Path可与Files类一起使用,以提供对其他文件操作,文件属性和I / O异常的更有效和广泛的访问,以帮助在文件操作失败时诊断错误。

    从以下版本开始:
    1.0
    另请参见:
    Serialized Form
    • 字段汇总

      字段  
      变量和类型 字段 描述
      static String pathSeparator
      与系统相关的路径分隔符,为方便起见,表示为字符串。
      static char pathSeparatorChar
      与系统相关的路径分隔符。
      static String separator
      系统相关的默认名称分隔符,为方便起见,表示为字符串。
      static char separatorChar
      系统相关的默认名称分隔符。
    • 构造方法摘要

      构造方法  
      构造器 描述
      File​(File parent, String child)
      从父抽象路径名和子路径名字符串创建新的 File实例。
      File​(String pathname)
      通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
      File​(String parent, String child)
      从父路径名字符串和子路径名字符串创建新的 File实例。
      File​(URI uri)
      通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。
    • 方法摘要

      所有方法  静态方法  实例方法 具体的方法  弃用的方法 
      变量和类型 方法 描述
      boolean canExecute()
      测试应用程序是否可以执行此抽象路径名表示的文件。
      boolean canRead()
      测试应用程序是否可以读取此抽象路径名表示的文件。
      boolean canWrite()
      测试应用程序是否可以修改此抽象路径名表示的文件。
      int compareTo​(File pathname)
      按字典顺序比较两个抽象路径名。
      boolean createNewFile()
      当且仅当具有此名称的文件尚不存在时,以原子方式创建由此抽象路径名命名的新空文件。
      static File createTempFile​(String prefix, String suffix)
      在默认临时文件目录中创建一个空文件,使用给定的前缀和后缀生成其名称。
      static File createTempFile​(String prefix, String suffix, File directory)
      在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。
      boolean delete()
      删除此抽象路径名表示的文件或目录。
      void deleteOnExit()
      请求在虚拟机终止时删除此抽象路径名表示的文件或目录。
      boolean equals​(Object obj)
      测试此抽象路径名与给定对象的相等性。
      boolean exists()
      测试此抽象路径名表示的文件或目录是否存在。
      File getAbsoluteFile()
      返回此抽象路径名的绝对形式。
      String getAbsolutePath()
      返回此抽象路径名的绝对路径名字符串。
      File getCanonicalFile()
      返回此抽象路径名的规范形式。
      String getCanonicalPath()
      返回此抽象路径名的规范路径名字符串。
      long getFreeSpace()
      通过此抽象路径名返回分区 named中未分配的字节数。
      String getName()
      返回此抽象路径名表示的文件或目录的名称。
      String getParent()
      返回此抽象路径名父项的路径名字符串,如果此路径名未指定父目录,则返回 null
      File getParentFile()
      返回此抽象路径名父项的抽象路径名,如果此路径名未指定父目录,则返回 null
      String getPath()
      将此抽象路径名转换为路径名字符串。
      long getTotalSpace()
      通过此抽象路径名返回分区 named的大小。
      long getUsableSpace()
      通过此抽象路径名返回分区 named上此虚拟机可用的字节数。
      int hashCode()
      计算此抽象路径名的哈希码。
      boolean isAbsolute()
      测试此抽象路径名是否为绝对路径。
      boolean isDirectory()
      测试此抽象路径名表示的文件是否为目录。
      boolean isFile()
      测试此抽象路径名表示的文件是否为普通文件。
      boolean isHidden()
      测试此抽象路径名指定的文件是否为隐藏文件。
      long lastModified()
      返回上次修改此抽象路径名表示的文件的时间。
      long length()
      返回此抽象路径名表示的文件的长度。
      String[] list()
      返回一个字符串数组,用于命名此抽象路径名表示的目录中的文件和目录。
      String[] list​(FilenameFilter filter)
      返回一个字符串数组,用于命名由此抽象路径名表示的目录中的文件和目录,以满足指定的过滤器。
      File[] listFiles()
      返回一个抽象路径名数组,表示此抽象路径名表示的目录中的文件。
      File[] listFiles​(FileFilter filter)
      返回一个抽象路径名数组,表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
      File[] listFiles​(FilenameFilter filter)
      返回一个抽象路径名数组,表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
      static File[] listRoots()
      列出可用的文件系统根目录。
      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 setReadOnly()
      标记此抽象路径名指定的文件或目录,以便仅允许读取操作。
      boolean setWritable​(boolean writable)
      一种方便的方法,用于设置此抽象路径名的所有者写入权限。
      boolean setWritable​(boolean writable, boolean ownerOnly)
      设置此抽象路径名的所有者或每个人的写入权限。
      Path toPath()
      返回从此抽象路径构造的java.nio.file.Path对象。
      String toString()
      返回此抽象路径名的路径名字符串。
      URI toURI()
      构造一个表示此抽象路径名的 file: URI。
      URL toURL()
      已过时。
      此方法不会自动转义URL中非法的字符。
    • 字段详细信息

      • separatorChar

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

        public static final String separator
        系统相关的默认名称分隔符,为方便起见,表示为字符串。 该字符串包含单个字符,即separatorChar
      • pathSeparatorChar

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

        public static final String pathSeparator
        与系统相关的路径分隔符,为方便起见,表示为字符串。 该字符串包含单个字符,即pathSeparatorChar
    • 构造方法详细信息

      • File

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

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

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

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

        参数
        parent - 父路径名字符串
        child - 子路径名字符串
        异常
        NullPointerException - 如果 childnull
      • File

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

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

        否则, 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
        另请参见:
        toURI()URI
    • 方法详细信息

      • getName

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

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

        抽象路径名的父节点包含路径名的前缀(如果有),以及路径名的名称序列中的每个名称(除了最后一个)。 如果名称序列为空,则路径名不会命名父目录。

        结果
        此抽象路径名指定的父目录的路径名字符串,如果此路径名未指定父路径, null
      • getParentFile

        public File getParentFile()
        返回此抽象路径名父项的抽象路径名,如果此路径名未指定父目录,则返回null

        抽象路径名的父节点包含路径名的前缀(如果有),以及路径名的名称序列中的每个名称(除了最后一个)。 如果名称序列为空,则路径名不会命名父目录。

        结果
        此抽象路径名指定的父目录的抽象路径名,如果此路径名未指定父路径, null
        从以下版本开始:
        1.2
      • getPath

        public String getPath()
        将此抽象路径名转换为路径名字符串。 生成的字符串使用default name-separator character分隔名称序列中的名称。
        结果
        此抽象路径名的字符串形式
      • isAbsolute

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

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

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

        结果
        绝对路径名字符串,表示与此抽象路径名相同的文件或目录
        异常
        SecurityException - 如果无法访问所需的系统属性值。
        另请参见:
        isAbsolute()
      • 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
        另请参见:
        Path.toRealPath(java.nio.file.LinkOption...)
      • 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()URIURI.toURL()URL
      • toURI

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

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

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

        new File(  f .toURI()).equals(  f .getAbsoluteFile())
        只要原始抽象路径名,URI和新抽象路径名都在同一个Java虚拟机的(可能是不同的调用)中创建。 由于抽象路径的与系统有关的性质,然而,这种关系通常不当持有file:被在虚拟机中创建的一个操作系统上URI被转换成抽象路径名在虚拟机中在不同的操作系统上。

        请注意,当此抽象路径名表示UNC路径名时,UNC的所有组件(包括服务器名称组件)都在URI路径中进行编码。 权限组件未定义,表示它表示为null Path类定义toUri方法,以在生成的URI的权限组件中对服务器名称进行编码。 可以使用toPath方法来获得表示该抽象路径名的Path

        结果
        一个绝对的分层URI,其方案等于 "file" ,表示此抽象路径名的路径,以及未定义的权限,查询和片段组件
        异常
        SecurityException - 如果无法访问所需的系统属性值。
        从以下版本开始:
        1.4
        另请参见:
        File(java.net.URI)URIURI.toURL()
      • 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)方法拒绝对文件的读访问权
        从以下版本开始:
        1.2
      • lastModified

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

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

        结果
        表示文件上次修改时间的long值,以纪元(格林威治标准时间0L ,1970年1月1日)为单位,以毫秒为单位,如果文件不存在或发生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)方法拒绝对文件的写访问权限
        从以下版本开始:
        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)方法拒绝对文件的删除访问权限
        从以下版本开始:
        1.2
        另请参见:
        delete()
      • 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)方法拒绝对目录的读访问权
        另请参见:
        Files.newDirectoryStream(Path,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)方法以及其表示的目录中的文件或目录的名称时,才会生成值true的路径名满足过滤器。
        参数
        filter - 文件名过滤器
        结果
        一组抽象路径名,表示此抽象路径名表示的目录中的文件和目录。 如果目录为空,则数组将为空。 如果此抽象路径名不表示目录,或者发生I / O错误,则返回null
        异常
        SecurityException - 如果存在安全管理器且其 SecurityManager.checkRead(String)方法拒绝对目录的读访问权限
        从以下版本开始:
        1.2
        另请参见:
        Files.newDirectoryStream(Path,String)
      • listFiles

        public File[] listFiles​(FileFilter filter)
        返回一个抽象路径名数组,表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 此方法的行为与listFiles()方法的行为相同,只是返回的数组中的路径名必须满足过滤器。 如果给定的filternull则接受所有路径名。 否则,当且仅当在路径名trueFileFilter.accept(File)方法时得到值true时,路径名才满足过滤器。
        参数
        filter - 文件过滤器
        结果
        一组抽象路径名,表示此抽象路径名表示的目录中的文件和目录。 如果目录为空,则数组将为空。 如果此抽象路径名不表示目录,或者发生I / O错误,则返回null
        异常
        SecurityException - 如果存在安全管理器且其 SecurityManager.checkRead(String)方法拒绝对目录的读访问权
        从以下版本开始:
        1.2
        另请参见:
        Files.newDirectoryStream(Path,java.nio.file.DirectoryStream.Filter)
      • mkdirs

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

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

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

        请注意, 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)开始,以毫秒为单位
        结果
        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
        结果
        true当且仅当抽象路径名存在 允许应用程序执行该文件时
        异常
        SecurityException - 如果存在安全管理器且其 SecurityManager.checkExec(java.lang.String)方法拒绝对文件执行访问
        从以下版本开始:
        1.6
      • listRoots

        public static File[] listRoots()
        列出可用的文件系统根目录。

        特定的Java平台可以支持零个或多个分层组织的文件系统。 每个文件系统都有一个root目录,可以从该目录中访问该文件系统中的所有其他文件。 例如,Windows平台的每个活动驱动器都有一个根目录; UNIX平台有一个根目录,即"/" 可用文件系统根的集合受各种系统级操作的影响,例如插入或弹出可移动介质以及断开或卸载物理或虚拟磁盘驱动器。

        此方法返回一个File对象的数组,表示可用文件系统根目录的根目录。 保证本地计算机上物理存在的任何文件的规范路径名将以此方法返回的根之一开始。

        驻留在某些其他计算机上并通过远程文件系统协议(如SMB或NFS)访问的文件的规范路径名可能会也可能不会以此方法返回的根之一开头。 如果远程文件的路径名在语法上与本地文件的路径名无法区分,那么它将以此方法返回的一个根开头。 因此,例如, File对象表示在Windows平台的映射的网络驱动器的根目录下将通过该方法返回,而File含有UNC路径名的对象将不通过该方法来返回。

        与此类中的大多数方法不同,此方法不会引发安全性异常。 如果存在安全管理器且其SecurityManager.checkRead(String)方法拒绝对特定根目录的读访问,则该目录不会出现在结果中。

        结果
        表示可用文件系统根的File对象数组,如果无法确定根集, null 如果没有文件系统根,则该数组将为空。
        从以下版本开始:
        1.2
        另请参见:
        FileStore
      • getTotalSpace

        public long getTotalSpace()
        通过此抽象路径名返回分区 named的大小。
        结果
        分区的大小(以字节为单位)或 0L如果此抽象路径名未指定分区)
        异常
        SecurityException - 如果已安装安全管理器且它拒绝RuntimePermission ("getFileSystemAttributes")或其SecurityManager.checkRead(String)方法拒绝对此抽象路径名指定的文件的读访问权
        从以下版本开始:
        1.6
      • getFreeSpace

        public long getFreeSpace()
        通过此抽象路径名返回分区named中未分配的字节数。

        返回的未分配字节数是一个提示,但不能保证可以使用大多数或任何这些字节。 此次调用后,未分配的字节数最有可能是准确的。 任何外部I / O操作(包括在此虚拟机外部的系统上进行的操作)都可能使其不准确。 此方法无法保证对此文件系统的写入操作将成功。

        结果
        分区上未分配的字节数,如果抽象路径名未指定分区, 0L 此值将小于或等于getTotalSpace()返回的文件系统总大小。
        异常
        SecurityException - 如果已安装安全管理器且它拒绝RuntimePermission ("getFileSystemAttributes")或其SecurityManager.checkRead(String)方法拒绝对此抽象路径名指定的文件的读访问权
        从以下版本开始:
        1.6
      • getUsableSpace

        public long getUsableSpace()
        通过此抽象路径名返回分区named上此虚拟机可用的字节数。 如果可能,此方法将检查写入权限和其他操作系统限制,因此通常可以比getFreeSpace()更准确地估计实际写入的新数据

        返回的可用字节数是一个提示,但不能保证可以使用大多数或任何这些字节。 此次调用后,未分配的字节数最有可能是准确的。 任何外部I / O操作(包括在此虚拟机外部的系统上进行的操作)都可能使其不准确。 此方法无法保证对此文件系统的写入操作将成功。

        结果
        分区上的可用字节数,如果抽象路径名未指定分区, 0L 在此信息不可用的系统上,此方法将等同于对getFreeSpace()的调用。
        异常
        SecurityException - 如果已安装安全管理器且它拒绝RuntimePermission ("getFileSystemAttributes")或其SecurityManager.checkRead(String)方法拒绝对此抽象路径名指定的文件的读访问权
        从以下版本开始:
        1.6
      • createTempFile

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

        在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。 如果此方法成功返回,则保证:

        1. 在调用此方法之前,返回的抽象路径名表示的文件不存在,并且
        2. 在当前的虚拟机调用中,此方法或其任何变体都不会再次返回相同的抽象路径名。
        此方法仅提供临时文件工具的一部分。 要安排自动删除此方法创建的文件,请使用deleteOnExit()方法。

        prefix参数必须至少为三个字符。 建议前缀为短的,有意义的字符串,如"hjb""mail" suffix参数可以是null ,在这种情况下将使用后缀".tmp"

        要创建新文件,可以首先调整前缀和后缀以适应底层平台的限制。 如果前缀太长,那么它将被截断,但它的前三个字符将始终保留。 如果后缀太长,那么它也将被截断,但如果它以句点字符( '.' )开头,那么将始终保留句点和后面的前三个字符。 完成这些调整后,将通过连接前缀,五个或更多内部生成的字符以及后缀来生成新文件的名称。

        如果directory参数为null则将使用系统相关的默认临时文件目录。 默认临时文件目录由系统属性java.io.tmpdir指定。 在UNIX系统上,此属性的默认值通常为"/tmp""/var/tmp" ; 在Microsoft Windows系统上,它通常是"C:\\WINNT\\TEMP" 调用Java虚拟机时,可以为此系统属性提供不同的值,但不保证对此属性的编程更改会对此方法使用的临时目录产生任何影响。

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

        public int compareTo​(File pathname)
        按字典顺序比较两个抽象路径名。 此方法定义的排序取决于底层系统。 在UNIX系统上,字母大小写在比较路径名时很重要; 在Microsoft Windows系统上它不是。
        Specified by:
        compareTo在界面 Comparable<File>
        参数
        pathname - 要与此抽象路径名进行比较的抽象路径名
        结果
        如果参数等于此抽象路径名,则为零;如果此抽象路径名按字典顺序小于参数,则为小于零;如果此抽象路径名在字典上大于参数,则值大于零
        从以下版本开始:
        1.2
      • equals

        public boolean equals​(Object obj)
        测试此抽象路径名与给定对象的相等性。 当且仅当参数不是null并且是表示与此抽象路径名相同的文件或目录的抽象路径名时,返回true 两个抽象路径名是否相等取决于底层系统。 在UNIX系统上,字母大小写在比较路径名时很重要; 在Microsoft Windows系统上它不是。
        重写:
        equalsObject
        参数
        obj - 要与此抽象路径名进行比较的对象
        结果
        true当且仅当对象相同时; 否则为false
        另请参见:
        Object.hashCode()HashMap
      • hashCode

        public int hashCode()
        计算此抽象路径名的哈希码。 因为抽象路径名的相等性本质上是依赖于系统的,所以它们的哈希码的计算也是如此。 在UNIX系统上,抽象路径名的哈希码等于其路径名字符串的唯一哈希码以及十进制值1234321 在Microsoft Windows系统上,哈希码等于其路径名字符串的异或或其哈希码转换为小写,小数值为1234321 在小写路径名字符串时不考虑区域设置。
        重写:
        hashCode在类 Object
        结果
        此抽象路径名的哈希码
        另请参见:
        Object.equals(java.lang.Object)System.identityHashCode(java.lang.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
        另请参见:
        Path.toFile()