- 所有已实现的接口:
Serializable,Comparable<File>
用户界面和操作系统使用依赖于系统的pathname strings来命名文件和目录。此类呈现分层路径名的抽象的、系统独立的视图。 abstract pathname 有两个组件:
- 一个可选的系统相关的 prefix 字符串,例如磁盘驱动器说明符,UNIX 根目录的
"/"或 Microsoft Windows UNC 路径名的"\\\\",以及 - 零个或多个字符串 names 的序列。
路径名字符串与抽象路径名之间的转换本质上是系统相关的。当抽象路径名转换为路径名字符串时,每个名称与下一个名称由默认值 separator character 的单个副本分隔。默认名称分隔符由系统属性 file.separator 定义,并在此类的公共静态字段 separator 和 separatorChar 中可用。当路径名字符串转换为抽象路径名时,其中的名称可能由默认名称分隔符或底层系统支持的任何其他名称分隔符分隔。
路径名,无论是抽象形式还是字符串形式,都可以是 absolute 或 relative 。绝对路径名是完整的,因为不需要其他信息来定位它所表示的文件。相反,相对路径名必须根据从其他路径名中获取的信息来解释。默认情况下,java.io 包中的类始终根据当前用户目录解析相对路径名。该目录由系统属性 user.dir 命名,通常是调用 Java 虚拟机的目录。
抽象路径名的parent可以通过调用此类的getParent() 方法获得,由路径名的前缀和路径名名称序列中除最后一个之外的每个名称组成。每个目录的绝对路径名都是任何 File 对象的祖先,其绝对抽象路径名以目录的绝对路径名开头。例如,抽象路径名 "/usr" 表示的目录是路径名 "/usr/local/bin" 表示的目录的祖先。
前缀概念用于处理 UNIX 平台上的根目录,以及 Microsoft Windows 平台上的驱动器说明符、根目录和 UNC 路径名,如下所示:
- 对于 UNIX 平台,绝对路径名的前缀始终是
"/"。相对路径名没有前缀。表示根目录的抽象路径名具有前缀"/"和一个空名称序列。 - 对于 Microsoft Windows 平台,包含驱动器说明符的路径名前缀由驱动器号和后跟
":"组成,如果路径名是绝对路径,则可能后跟"\\"。 UNC 路径名的前缀是"\\\\";主机名和共享名是名称序列中的前两个名称。未指定驱动器的相对路径名没有前缀。
此类的实例可能表示也可能不表示实际的文件系统对象,例如文件或目录。如果它确实表示这样一个对象,那么该对象驻留在分割.分区是文件系统存储的特定于操作系统的部分。单个存储设备(例如物理磁盘驱动器、闪存、CD-ROM)可能包含多个分区。该对象(如果有的话)将驻留在分区 named 上,由该路径名的绝对形式的某个祖先创建。
文件系统可以对实际文件系统对象的某些操作实现限制,例如读取、写入和执行。这些限制统称为访问权限.文件系统可能对单个对象具有多组访问权限。例如,一组可能适用于对象的所有者,另一个可能适用于所有其他用户。对象的访问权限可能会导致此类中的某些方法失败。
File 类的实例是不可变的;也就是说,一旦创建,由 File 对象表示的抽象路径名将永远不会改变。
与 java.nio.file 包的互操作性
java.nio.file 包定义了 Java 虚拟机访问文件、文件属性和文件系统的接口和类。此 API 可用于克服 java.io.File 类的许多限制。 toPath 方法可用于获取 Path ,它使用由 File 对象表示的抽象路径来定位文件。生成的 Path 可与 Files 类一起使用,以提供对其他文件操作、文件属性和 I/O 异常的更有效和更广泛的访问,以帮助在文件操作失败时诊断错误。
- 自从:
- 1.0
- 参见:
-
字段摘要
字段 -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述boolean测试应用程序是否可以执行此抽象路径名表示的文件。booleancanRead()测试应用程序是否可以读取此抽象路径名表示的文件。booleancanWrite()测试应用程序是否可以修改此抽象路径名表示的文件。int按字典顺序比较两个抽象路径名。boolean当且仅当具有此名称的文件尚不存在时,以原子方式创建一个以此抽象路径名命名的新空文件。static FilecreateTempFile(String prefix, String suffix) 在默认临时文件目录中创建一个空文件,使用给定的前缀和后缀生成其名称。static FilecreateTempFile(String prefix, String suffix, File directory) 在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。booleandelete()删除此抽象路径名表示的文件或目录。void请求在虚拟机终止时删除此抽象路径名表示的文件或目录。boolean测试此抽象路径名是否与给定对象相等。booleanexists()测试此抽象路径名表示的文件或目录是否存在。返回此抽象路径名的绝对形式。返回此抽象路径名的绝对路径名字符串。返回此抽象路径名的规范形式。返回此抽象路径名的规范路径名字符串。long通过此抽象路径名返回分区 named 中未分配的字节数。getName()返回此抽象路径名表示的文件或目录的名称。返回此抽象路径名的父目录的路径名字符串,如果此路径名未指定父目录,则返回null。返回此抽象路径名的父目录的抽象路径名,如果此路径名未指定父目录,则返回null。getPath()将此抽象路径名转换为路径名字符串。long通过此抽象路径名返回分区 named 的大小。long通过此抽象路径名返回分区 named 上此虚拟机可用的字节数。inthashCode()计算此抽象路径名的哈希码。boolean测试此抽象路径名是否是绝对的。boolean测试此抽象路径名表示的文件是否为目录。booleanisFile()测试此抽象路径名表示的文件是否为普通文件。booleanisHidden()测试以此抽象路径名命名的文件是否为隐藏文件。long返回上次修改此抽象路径名表示的文件的时间。longlength()返回此抽象路径名表示的文件的长度。String[]list()返回一个字符串数组,命名此抽象路径名表示的目录中的文件和目录。String[]list(FilenameFilter filter) 返回一个字符串数组,命名此抽象路径名表示的目录中满足指定过滤器的文件和目录。File[]返回一个抽象路径名数组,表示此抽象路径名表示的目录中的文件。File[]listFiles(FileFilter filter) 返回一个抽象路径名数组,表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。File[]listFiles(FilenameFilter filter) 返回一个抽象路径名数组,表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。static File[]列出可用的文件系统根目录。booleanmkdir()创建以此抽象路径名命名的目录。booleanmkdirs()创建以此抽象路径名命名的目录,包括任何必需但不存在的父目录。boolean重命名此抽象路径名表示的文件。booleansetExecutable(boolean executable) 设置所有者对此抽象路径名的执行权限的便捷方法。booleansetExecutable(boolean executable, boolean ownerOnly) 设置所有者或每个人对此抽象路径名的执行权限。booleansetLastModified(long time) 设置以此抽象路径名命名的文件或目录的最后修改时间。booleansetReadable(boolean readable) 设置所有者对此抽象路径名的读取权限的便捷方法。booleansetReadable(boolean readable, boolean ownerOnly) 设置所有者或所有人对此抽象路径名的读取权限。boolean标记由此抽象路径名命名的文件或目录,以便只允许读取操作。booleansetWritable(boolean writable) 设置所有者对此抽象路径名的写权限的便捷方法。booleansetWritable(boolean writable, boolean ownerOnly) 设置所有者或每个人对此抽象路径名的写权限。toPath()返回从此抽象路径构造的java.nio.file.Path对象。toString()返回此抽象路径名的路径名字符串。toURI()构造一个表示此抽象路径名的file:URI。toURL()已弃用。此方法不会自动转义 URL 中的非法字符。
-
字段详细信息
-
separatorChar
public static final char separatorChar系统相关的默认名称分隔符。此字段初始化为包含系统属性值的第一个字符file.separator。在 UNIX 系统上,该字段的值为'/';在 Microsoft Windows 系统上它是'\\'。- 参见:
-
separator
系统相关的默认名称分隔符,为方便起见表示为字符串。该字符串包含单个字符,即separatorChar。 -
pathSeparatorChar
public static final char pathSeparatorChar系统相关的路径分隔符。此字段初始化为包含系统属性值的第一个字符path.separator。此字符用于分隔以 path list 形式给出的文件序列中的文件名。在 UNIX 系统上,这个字符是':';在 Microsoft Windows 系统上它是';'。- 参见:
-
pathSeparator
系统相关的路径分隔符,为方便起见表示为字符串。该字符串包含单个字符,即pathSeparatorChar。
-
-
构造方法详细信息
-
文件
通过将给定的路径名字符串转换为抽象路径名来创建一个新的File实例。如果给定的字符串是空字符串,则结果是空的抽象路径名。- 参数:
pathname- 路径名字符串- 抛出:
NullPointerException- 如果pathname参数是null
-
文件
从父路径名字符串和子路径名字符串创建一个新的File实例。如果
parent是null,则创建新的File实例就像通过在给定的child路径名字符串上调用单参数File构造函数一样。否则,
parent路径名字符串用于表示目录,child路径名字符串用于表示目录或文件。如果child路径名字符串是绝对的,则它会以系统相关的方式转换为相对路径名。如果parent是空字符串,则通过将child转换为抽象路径名并将结果解析为依赖于系统的默认目录来创建新的File实例。否则,每个路径名字符串都将转换为抽象路径名,并且子抽象路径名将针对父级进行解析。- 参数:
parent- 父路径名字符串child- 子路径名字符串- 抛出:
NullPointerException- 如果child是null
-
File
从父抽象路径名和子路径名字符串创建一个新的File实例。如果
parent是null,则创建新的File实例就像通过在给定的child路径名字符串上调用单参数File构造函数一样。否则,
parent抽象路径名被用来表示目录,child路径名字符串被用来表示目录或文件。如果child路径名字符串是绝对的,则它会以系统相关的方式转换为相对路径名。如果parent是空的抽象路径名,则通过将child转换为抽象路径名并将结果解析为依赖于系统的默认目录来创建新的File实例。否则,每个路径名字符串都将转换为抽象路径名,并且子抽象路径名将针对父级进行解析。- 参数:
parent- 父抽象路径名child- 子路径名字符串- 抛出:
NullPointerException- 如果child是null
-
File
通过将给定的file:URI 转换为抽象路径名来创建一个新的File实例。file:URI 的确切形式是系统相关的,因此此构造函数执行的转换也是系统相关的。对于给定的抽象路径名f保证
只要原始抽象路径名、URI 和新抽象路径名都在同一 Java 虚拟机(可能是不同的调用)中创建。但是,当在一个操作系统的虚拟机中创建的new File(f.ftoURI()).equals(.getAbsoluteFile())file:URI 被转换为不同操作系统的虚拟机中的抽象路径名时,这种关系通常不成立。- 参数:
uri- 一个绝对的分层 URI,其方案等于"file",一个非空路径组件,以及未定义的权限、查询和片段组件- 抛出:
NullPointerException- 如果uri是nullIllegalArgumentException- 如果参数的前提条件不成立- 自从:
- 1.4
- 参见:
-
-
方法详情
-
getName
返回此抽象路径名表示的文件或目录的名称。这只是路径名名称序列中的最后一个名称。如果路径名的名称序列为空,则返回空字符串。- 返回:
- 此抽象路径名表示的文件或目录的名称,如果此路径名的名称序列为空,则为空字符串
-
getParent
返回此抽象路径名的父目录的路径名字符串,如果此路径名未指定父目录,则返回null。抽象路径名的 parent 由路径名的前缀(如果有)和路径名名称序列中除最后一个之外的每个名称组成。如果名称序列为空,则路径名不会命名父目录。
- 返回:
-
以此抽象路径名命名的父目录的路径名字符串,如果此路径名未指定父目录,则为
null
-
getParentFile
返回此抽象路径名的父目录的抽象路径名,如果此路径名未指定父目录,则返回null。抽象路径名的 parent 由路径名的前缀(如果有)和路径名名称序列中除最后一个之外的每个名称组成。如果名称序列为空,则路径名不会命名父目录。
- 返回:
-
此抽象路径名命名的父目录的抽象路径名,如果此路径名未指定父目录,则为
null - 自从:
- 1.2
-
getPath
将此抽象路径名转换为路径名字符串。生成的字符串使用default name-separator character分隔名称序列中的名称。- 返回:
- 此抽象路径名的字符串形式
-
isAbsolute
public boolean isAbsolute()测试此抽象路径名是否是绝对的。绝对路径名的定义是系统相关的。在 UNIX 系统上,如果前缀为"/",则路径名是绝对的。在 Microsoft Windows 系统上,如果路径名的前缀是驱动器说明符后跟"\\",或者如果它的前缀是"\\\\",则路径名是绝对的。- 返回:
true如果此抽象路径名是绝对的,false否则
-
getAbsolutePath
返回此抽象路径名的绝对路径名字符串。如果此抽象路径名已经是绝对路径名,则路径名字符串就像由
getPath()方法一样简单地返回。如果此抽象路径名是空抽象路径名,则返回当前用户目录的路径名字符串,该目录由系统属性user.dir命名。否则,此路径名将以系统相关的方式解析。在 UNIX 系统上,相对路径名通过根据当前用户目录解析而成为绝对路径名。在 Microsoft Windows 系统上,通过将相对路径名解析为由路径名命名的驱动器的当前目录(如果有的话),从而使相对路径名成为绝对路径名;如果不是,则根据当前用户目录进行解析。- 返回:
- 表示与此抽象路径名相同的文件或目录的绝对路径名字符串
- 抛出:
SecurityException- 如果无法访问所需的系统属性值。- 参见:
-
getAbsoluteFile
返回此抽象路径名的绝对形式。相当于new File(this.。getAbsolutePath())- 返回:
- 表示与此抽象路径名相同的文件或目录的绝对抽象路径名
- 抛出:
SecurityException- 如果无法访问所需的系统属性值。- 自从:
- 1.2
-
getCanonicalPath
返回此抽象路径名的规范路径名字符串。规范路径名既是绝对的又是唯一的。规范形式的精确定义是系统相关的。如有必要,此方法首先将此路径名转换为绝对形式,就像通过调用
getAbsolutePath()方法一样,然后以系统相关的方式将其映射为其唯一形式。这通常涉及从路径名中删除冗余名称(例如"."和"..")、解析符号链接(在 UNIX 平台上)以及将驱动器号转换为标准大小写(在 Microsoft Windows 平台上)。每个表示现有文件或目录的路径名都具有唯一的规范形式。每个表示不存在的文件或目录的路径名也具有唯一的规范形式。不存在的文件或目录的路径名的规范形式可能与创建文件或目录后相同路径名的规范形式不同。类似地,现有文件或目录的路径名的规范形式可能与删除文件或目录后相同路径名的规范形式不同。
- 返回:
- 规范路径名字符串,表示与此抽象路径名相同的文件或目录
- 抛出:
IOException- 如果发生 I/O 错误,这是可能的,因为规范路径名的构造可能需要文件系统查询SecurityException- 如果无法访问所需的系统属性值,或者安全管理器存在且其SecurityManager.checkRead(java.io.FileDescriptor)方法拒绝对文件的读取访问- 自从:
- 1.1
- 参见:
-
getCanonicalFile
返回此抽象路径名的规范形式。相当于new File(this.。getCanonicalPath())- 返回:
- 规范路径名字符串,表示与此抽象路径名相同的文件或目录
- 抛出:
IOException- 如果发生 I/O 错误,这是可能的,因为规范路径名的构造可能需要文件系统查询SecurityException- 如果无法访问所需的系统属性值,或者安全管理器存在且其SecurityManager.checkRead(java.io.FileDescriptor)方法拒绝对文件的读取访问- 自从:
- 1.2
- 参见:
-
toURL
将此抽象路径名转换为file:URL。 URL 的确切形式取决于系统。如果可以确定这个抽象路径名表示的文件是一个目录,那么生成的 URL 将以斜杠结尾。- 返回:
- 表示等效文件 URL 的 URL 对象
- 抛出:
MalformedURLException- 如果路径无法解析为 URL- 自从:
- 1.2
- 参见:
-
toURI
构造一个表示此抽象路径名的file:URI。URI 的确切形式取决于系统。如果可以确定这个抽象路径名表示的文件是一个目录,那么生成的 URI 将以斜杠结尾。
对于给定的抽象路径名f, 可以保证
只要原始抽象路径名、URI 和新抽象路径名都在同一 Java 虚拟机(可能是不同的调用)中创建。然而,由于抽象路径名的系统依赖性,当在一个操作系统的虚拟机中创建的newfFile(.toURI()).equals(f.getAbsoluteFile())file:URI 被转换为不同操作系统的虚拟机中的抽象路径名时,这种关系通常不成立。请注意,当此抽象路径名表示 UNC 路径名时,UNC 的所有组件(包括服务名称组件)都在
URI路径中编码。权限组件未定义,这意味着它表示为null。Path类定义了toUri方法,以在生成的URI的授权组件中对服务名称进行编码。toPath方法可用于获取表示此抽象路径名的Path。- 返回:
-
方案等于
"file"的绝对分层 URI,表示此抽象路径名的路径,以及未定义的权限、查询和片段组件 - 抛出:
SecurityException- 如果无法访问所需的系统属性值。- 自从:
- 1.4
- 参见:
-
canRead
public boolean canRead()测试应用程序是否可以读取此抽象路径名表示的文件。在某些平台上,可以使用允许它读取标记为不可读的文件的特殊权限来启动 Java 虚拟机。因此,即使该文件没有读取权限,此方法也可能返回true。- 返回:
true当且仅当此抽象路径名指定的文件存在时 and 可以被应用程序读取;false否则- 抛出:
SecurityException- 如果安全管理器存在且其SecurityManager.checkRead(java.lang.String)方法拒绝对文件的读取访问
-
canWrite
public boolean canWrite()测试应用程序是否可以修改此抽象路径名表示的文件。在某些平台上,可以使用允许它修改标记为只读的文件的特殊权限来启动 Java 虚拟机。因此,即使文件被标记为只读,此方法也可能返回true。- 返回:
true当且仅当文件系统实际包含此抽象路径名表示的文件时 and 允许应用程序写入该文件;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当且仅当此抽象路径名表示的文件存在时 and 是一个目录;false否则- 抛出:
SecurityException- 如果安全管理器存在且其SecurityManager.checkRead(java.lang.String)方法拒绝对文件的读取访问
-
isFile
public boolean isFile()测试此抽象路径名表示的文件是否为普通文件。如果文件不是目录,并且满足其他系统相关条件,则文件为 normal。 Java 应用程序创建的任何非目录文件都保证是普通文件。如果需要区分 I/O 异常和文件不是正常文件的情况,或者同时需要同一文件的多个属性,则可以使用
Files.readAttributes方法。- 返回:
true当且仅当此抽象路径名表示的文件存在时 and 是普通文件;false否则- 抛出:
SecurityException- 如果安全管理器存在且其SecurityManager.checkRead(java.lang.String)方法拒绝对文件的读取访问
-
isHidden
public boolean isHidden()测试以此抽象路径名命名的文件是否为隐藏文件。 hidden 的确切定义取决于系统。在 UNIX 系统上,如果文件名以句点字符 ('.') 开头,则该文件被认为是隐藏的。在 Microsoft Windows 系统上,如果一个文件在文件系统中被标记为隐藏,则该文件被认为是隐藏的。- 返回:
true当且仅当此抽象路径名表示的文件根据底层平台的约定隐藏时- 抛出:
SecurityException- 如果安全管理器存在且其SecurityManager.checkRead(java.lang.String)方法拒绝对文件的读取访问- 自从:
- 1.2
-
lastModified
public long lastModified()返回上次修改此抽象路径名表示的文件的时间。- API 注意:
-
虽然返回值的时间单位是毫秒,但值的粒度取决于底层文件系统,可能更大。例如,一些文件系统使用以秒为单位的时间戳。
如果需要区分 I/O 异常与返回
0L的情况,或者同时需要同一文件的多个属性,或者需要上次访问时间或创建时间,则可以使用Files.readAttributes方法。但是,如果只需要上次修改的时间,则可以改用Files.getLastModifiedTime方法。 - 返回:
long值表示文件上次修改的时间,以纪元(格林威治标准时间 00:00:00,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
当且仅当具有此名称的文件尚不存在时,以原子方式创建一个以此抽象路径名命名的新空文件。检查文件是否存在以及如果文件不存在则创建文件是单个操作,对于可能影响该文件的所有其他文件系统活动而言,该操作是原子的。注意:此方法应not用于文件锁定,因为生成的协议不能可靠地工作。应该改用
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 语言规范的定义,只会在虚拟机正常终止时尝试删除。一旦请求删除,就无法取消该请求。因此,应谨慎使用此方法。
注意:此方法应not用于文件锁定,因为生成的协议不能可靠地工作。应该改用
FileLock设施。- 抛出:
SecurityException- 如果安全管理器存在且其SecurityManager.checkDelete(java.lang.String)方法拒绝对文件的删除访问- 自从:
- 1.2
- 参见:
-
list
返回一个字符串数组,命名此抽象路径名表示的目录中的文件和目录。如果此抽象路径名不表示目录,则此方法返回
null。否则返回一个字符串数组,一个对应于目录中的每个文件或目录。表示目录本身和目录的父目录的名称不包含在结果中。每个字符串都是一个文件名而不是完整的路径。不能保证结果数组中的名称字符串会以任何特定顺序出现;尤其不能保证它们按字母顺序出现。
请注意,
Files类定义了newDirectoryStream方法来打开目录并遍历目录中文件的名称。这在处理非常大的目录时可能会使用更少的资源,并且在处理远程目录时可能会更快地响应。- 返回:
-
命名此抽象路径名表示的目录中的文件和目录的字符串数组。如果目录为空,数组将为空。如果此抽象路径名不表示目录,或者发生 I/O 错误,则返回
null。 - 抛出:
SecurityException- 如果安全管理器存在且其SecurityManager.checkRead(String)方法拒绝对目录的读取访问
-
list
返回一个字符串数组,命名此抽象路径名表示的目录中满足指定过滤器的文件和目录。此方法的行为与list()方法的行为相同,只是返回数组中的字符串必须满足过滤器。如果给定的filter是null那么所有的名字都会被接受。否则,当且仅当过滤器的FilenameFilter.accept(File, String)方法在此抽象路径名和它表示的目录中的文件或目录的名称上调用时,名称满足过滤器当且仅当值true的结果。- 参数:
filter- 文件名过滤器- 返回:
-
一个字符串数组,命名由给定
filter接受的此抽象路径名表示的目录中的文件和目录。如果目录为空或过滤器未接受任何名称,则数组将为空。如果此抽象路径名不表示目录,或者发生 I/O 错误,则返回null。 - 抛出:
SecurityException- 如果安全管理器存在且其SecurityManager.checkRead(String)方法拒绝对目录的读取访问- 参见:
-
listFiles
返回一个抽象路径名数组,表示此抽象路径名表示的目录中的文件。如果此抽象路径名不表示目录,则此方法返回
null。否则返回一个File对象数组,目录中的每个文件或目录对应一个对象。表示目录本身和目录的父目录的路径名不包含在结果中。每个生成的抽象路径名都是使用File(File, String)构造函数从这个抽象路径名构造的。因此,如果这个路径名是绝对的,那么每个结果路径名都是绝对的;如果此路径名是相对的,则每个生成的路径名都将相对于同一目录。不能保证结果数组中的名称字符串会以任何特定顺序出现;尤其不能保证它们按字母顺序出现。
请注意,
Files类定义了newDirectoryStream方法来打开目录并遍历目录中文件的名称。在处理非常大的目录时,这可能会使用更少的资源。- 返回:
-
一组抽象路径名,表示此抽象路径名表示的目录中的文件和目录。如果目录为空,数组将为空。如果此抽象路径名不表示目录,或者发生 I/O 错误,则返回
null。 - 抛出:
SecurityException- 如果安全管理器存在且其SecurityManager.checkRead(String)方法拒绝对目录的读取访问- 自从:
- 1.2
-
listFiles
返回一个抽象路径名数组,表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。此方法的行为与listFiles()方法的行为相同,只是返回数组中的路径名必须满足过滤器。如果给定的filter是null则接受所有路径名。否则,当且仅当过滤器的FilenameFilter.accept(File, String)方法在此抽象路径名和它表示的目录中的文件或目录的名称上调用时,路径名满足过滤器当且仅当值true的结果。- 参数:
filter- 文件名过滤器- 返回:
-
一组抽象路径名,表示此抽象路径名表示的目录中的文件和目录。如果目录为空,数组将为空。如果此抽象路径名不表示目录,或者发生 I/O 错误,则返回
null。 - 抛出:
SecurityException- 如果安全管理器存在且其SecurityManager.checkRead(String)方法拒绝对目录的读取访问- 自从:
- 1.2
- 参见:
-
listFiles
返回一个抽象路径名数组,表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。此方法的行为与listFiles()方法的行为相同,只是返回数组中的路径名必须满足过滤器。如果给定的filter是null则接受所有路径名。否则,当且仅当在路径名上调用过滤器的FileFilter.accept(File)方法时产生值true时,路径名才满足过滤器。- 参数:
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
重命名此抽象路径名表示的文件。此方法行为的许多方面本质上是依赖于平台的:重命名操作可能无法将文件从一个文件系统移动到另一个文件系统,它可能不是原子的,如果文件具有目标抽象路径名,则它可能不会成功已经存在。应始终检查返回值以确保重命名操作成功。由于
File的实例是不可变的,因此不会更改此 File 对象以命名目标文件或目录。- 参数:
dest- 指定文件的新抽象路径名- 返回:
true当且仅当重命名成功时;false否则- 抛出:
SecurityException- 如果安全管理器存在且其SecurityManager.checkWrite(java.lang.String)方法拒绝对旧路径名或新路径名的写访问NullPointerException- 如果参数dest是null
-
setLastModified
public boolean setLastModified(long time) 设置以此抽象路径名命名的文件或目录的最后修改时间。所有平台都支持精确到秒的文件修改时间,但有些平台提供的精度更高。该参数将被截断以适应支持的精度。如果操作成功并且没有对文件进行任何干预操作,则
lastModified()方法的下一次调用将返回传递给此方法的(可能被截断的)time参数。- 参数:
time- 新的最后修改时间,自纪元(00:00:00 GMT,1970 年 1 月 1 日)以来以毫秒为单位测量- 返回:
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,则设置访问权限以允许写操作; iffalse禁止写操作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,则设置访问权限以允许写操作; iffalse禁止写操作- 返回:
true当且仅当操作成功时。如果用户无权更改此抽象路径名的访问权限,则操作将失败。- 抛出:
SecurityException- 如果安全管理器存在且其SecurityManager.checkWrite(java.lang.String)方法拒绝对文件的写访问- 自从:
- 1.6
-
setReadable
public boolean setReadable(boolean readable, boolean ownerOnly) 设置所有者或所有人对此抽象路径名的读取权限。在某些平台上,可以使用允许它读取标记为不可读的文件的特殊权限来启动 Java 虚拟机。Files类定义了对文件属性(包括文件权限)进行操作的方法。这可以在需要更精细地操作文件权限时使用。- 参数:
readable- 如果是true,则设置访问权限以允许读取操作; iffalse禁止读取操作ownerOnly- 如果为true,则读取权限仅适用于所有者的读取权限;否则,它适用于所有人。如果底层文件系统无法区分所有者的读取权限与其他人的读取权限,那么该权限将适用于所有人,而不管这个值。- 返回:
true当且仅当操作成功时。如果用户无权更改此抽象路径名的访问权限,则操作将失败。如果readable为false且底层文件系统未实现读取权限,则操作将失败。- 抛出:
SecurityException- 如果安全管理器存在且其SecurityManager.checkWrite(java.lang.String)方法拒绝对文件的写访问- 自从:
- 1.6
-
setReadable
public boolean setReadable(boolean readable) 设置所有者对此抽象路径名的读取权限的便捷方法。在某些平台上,可以使用允许它读取标记为不可读的文件的特殊权限来启动 Java 虚拟机。对
file.setReadable(arg)形式的方法的调用与调用的行为完全相同file.setReadable(arg, true)- 参数:
readable- 如果是true,则设置访问权限以允许读取操作; iffalse禁止读取操作- 返回:
true当且仅当操作成功时。如果用户无权更改此抽象路径名的访问权限,则操作将失败。如果readable为false且底层文件系统未实现读取权限,则操作将失败。- 抛出:
SecurityException- 如果安全管理器存在且其SecurityManager.checkWrite(java.lang.String)方法拒绝对文件的写访问- 自从:
- 1.6
-
setExecutable
public boolean setExecutable(boolean executable, boolean ownerOnly) 设置所有者或每个人对此抽象路径名的执行权限。在某些平台上,可以使用允许它执行未标记为可执行文件的特殊权限来启动 Java 虚拟机。Files类定义了对文件属性(包括文件权限)进行操作的方法。这可以在需要更精细地操作文件权限时使用。- 参数:
executable- 如果是true,则设置访问权限以允许执行操作; iffalse禁止执行操作ownerOnly- 如果为true,则执行权限仅适用于所有者的执行权限;否则,它适用于所有人。如果底层文件系统无法区分所有者的执行权限与其他人的执行权限,那么该权限将适用于所有人,而不管这个值。- 返回:
true当且仅当操作成功时。如果用户无权更改此抽象路径名的访问权限,则操作将失败。如果executable是false并且底层文件系统没有实现执行权限,则操作将失败。- 抛出:
SecurityException- 如果安全管理器存在且其SecurityManager.checkWrite(java.lang.String)方法拒绝对文件的写访问- 自从:
- 1.6
-
setExecutable
public boolean setExecutable(boolean executable) 设置所有者对此抽象路径名的执行权限的便捷方法。在某些平台上,可以使用允许它执行未标记为可执行文件的特殊权限来启动 Java 虚拟机。对
file.setExcutable(arg)形式的方法的调用与调用的行为完全相同file.setExecutable(arg, true)- 参数:
executable- 如果是true,则设置访问权限以允许执行操作; iffalse禁止执行操作- 返回:
true当且仅当操作成功时。如果用户无权更改此抽象路径名的访问权限,则操作将失败。如果executable是false并且底层文件系统没有实现执行权限,则操作将失败。- 抛出:
SecurityException- 如果安全管理器存在且其SecurityManager.checkWrite(java.lang.String)方法拒绝对文件的写访问- 自从:
- 1.6
-
canExecute
public boolean canExecute()测试应用程序是否可以执行此抽象路径名表示的文件。在某些平台上,可以使用允许它执行未标记为可执行文件的特殊权限来启动 Java 虚拟机。因此,即使文件没有执行权限,此方法也可能返回true。- 返回:
true当且仅当抽象路径名存在时 and 允许应用程序执行文件- 抛出:
SecurityException- 如果安全管理器存在且其SecurityManager.checkExec(java.lang.String)方法拒绝对文件的执行访问- 自从:
- 1.6
-
listRoots
列出可用的文件系统根目录。特定的 Java 平台可能支持零个或多个分层组织的文件系统。每个文件系统都有一个
root目录,从中可以访问该文件系统中的所有其他文件。例如,Windows 平台对于每个活动驱动器都有一个根目录; UNIX 平台有一个根目录,即"/"。可用文件系统根集受各种系统级操作的影响,例如可移动媒体的插入或弹出以及物理或虚拟磁盘驱动器的断开或卸载。此方法返回一个
File对象数组,表示可用文件系统根的根目录。保证本地机器上物理存在的任何文件的规范路径名都将以此方法返回的根之一开始。驻留在其他机器上并通过远程文件系统协议(如 SMB 或 NFS)访问的文件的规范路径名可能以也可能不以此方法返回的根之一开头。如果远程文件的路径名在句法上与本地文件的路径名无法区分,那么它将以此方法返回的根之一开始。因此,例如,此方法将返回表示 Windows 平台映射网络驱动器根目录的
File对象,而此方法不会返回包含 UNC 路径名的File对象。与此类中的大多数方法不同,此方法不会引发安全异常。如果安全管理器存在并且其
SecurityManager.checkRead(String)方法拒绝对特定根目录的读取访问,则该目录将不会出现在结果中。- 返回:
-
表示可用文件系统根的
File对象数组,如果无法确定根集,则为null。如果没有文件系统根,该数组将为空。 - 自从:
- 1.2
- 参见:
-
getTotalSpace
public long getTotalSpace()- 返回:
-
分区的大小(以字节为单位)或
0L如果此抽象路径名未命名分区或无法获取大小 - 抛出:
SecurityException- 如果已安装安全管理器并且它拒绝RuntimePermission("getFileSystemAttributes")或其SecurityManager.checkRead(String)方法拒绝对此抽象路径名命名的文件的读取访问- 自从:
- 1.6
- 参见:
-
getFreeSpace
public long getFreeSpace()通过此抽象路径名返回分区 named 中未分配的字节数。如果分区中未分配的字节数大于Long.MAX_VALUE,则返回Long.MAX_VALUE。返回的未分配字节数是一个提示,但不能保证可以使用这些字节中的大部分或任何字节。未分配的字节数最有可能在此调用后立即准确。它可能会因任何外部 I/O 操作而变得不准确,包括在该虚拟机之外的系统上进行的操作。此方法不保证对该文件系统的写入操作会成功。
- 返回:
-
分区上未分配的字节数或
0L如果抽象路径名未命名分区或无法获得此数字。该值将小于或等于getTotalSpace()返回的文件系统总大小。 - 抛出:
SecurityException- 如果已安装安全管理器并且它拒绝RuntimePermission("getFileSystemAttributes")或其SecurityManager.checkRead(String)方法拒绝对此抽象路径名命名的文件的读取访问- 自从:
- 1.6
- 参见:
-
getUsableSpace
public long getUsableSpace()通过此抽象路径名返回分区 named 上此虚拟机可用的字节数。如果分区中的可用字节数大于Long.MAX_VALUE,则返回Long.MAX_VALUE。如果可能,此方法会检查写入权限和其他操作系统限制,因此通常会比getFreeSpace()更准确地估计实际可以写入多少新数据。返回的可用字节数是一个提示,但不能保证可以使用这些字节中的大部分或任何字节。可用字节数很可能在该调用后立即准确。它可能会因任何外部 I/O 操作而变得不准确,包括在该虚拟机之外的系统上进行的操作。此方法不保证对该文件系统的写入操作会成功。
- 返回:
-
分区上的可用字节数或
0L如果抽象路径名未命名分区或无法获得此数字。在该信息不可用的系统上,此方法等同于调用getFreeSpace()。 - 抛出:
SecurityException- 如果已安装安全管理器并且它拒绝RuntimePermission("getFileSystemAttributes")或其SecurityManager.checkRead(String)方法拒绝对此抽象路径名命名的文件的读取访问- 自从:
- 1.6
- 参见:
-
createTempFile
在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。如果此方法成功返回,则可以保证:
- 此方法之前,由返回的抽象路径名表示的文件不存在,并且
- 此方法及其任何变体都不会在虚拟机的当前调用中再次返回相同的抽象路径名。
deleteOnExit()方法。prefix参数的长度必须至少为三个字符。建议前缀是一个简短、有意义的字符串,例如"hjb"或"mail"。suffix参数可能是null,在这种情况下将使用后缀".tmp"。要创建新文件,可以首先调整前缀和后缀以适应底层平台的限制。如果前缀太长,它将被截断,但它的前三个字符将始终被保留。如果后缀太长,那么它也会被截断,但如果它以句点字符 (
'.') 开头,那么句点和后面的前三个字符将始终保留。完成这些调整后,将通过连接前缀、五个或更多内部生成的字符和后缀来生成新文件的名称。如果
directory参数是null则将使用依赖于系统的默认临时文件目录。默认临时文件目录由系统属性java.io.tmpdir指定。在 UNIX 系统上,此属性的默认值通常为"/tmp"或"/var/tmp";在 Microsoft Windows 系统上,它通常是"C:\\WINNT\\TEMP"。调用 Java 虚拟机时,可能会为该系统属性赋予不同的值,但不保证对该属性的编程更改对该方法使用的临时目录有任何影响。如果
directory参数不是null并且它的抽象路径名有效并且表示一个现有的可写目录,那么该文件将在该目录中创建。否则将不会创建文件并抛出IOException。在任何情况下都不会在directory参数指定的位置创建目录。- 参数:
prefix- 用于生成文件名的前缀字符串;长度必须至少为三个字符suffix- 用于生成文件名的后缀字符串;可能是null,在这种情况下将使用后缀".tmp"directory- 要在其中创建文件的目录,如果要使用默认临时文件目录,则为null- 返回:
- 表示新创建的空文件的抽象路径名
- 抛出:
IllegalArgumentException- 如果prefix参数包含的字符少于三个IOException- 如果无法创建文件SecurityException- 如果安全管理器存在且其SecurityManager.checkWrite(java.lang.String)方法不允许创建文件- 自从:
- 1.2
-
createTempFile
在默认临时文件目录中创建一个空文件,使用给定的前缀和后缀生成其名称。调用此方法等同于调用createTempFile(prefix, suffix, null)。Files.createTempFile方法提供了一种在临时文件目录中创建空文件的替代方法。通过该方法创建的文件可能对通过该方法创建的文件具有更严格的访问权限,因此可能更适合对安全敏感的应用程序。- 参数:
prefix- 用于生成文件名的前缀字符串;长度必须至少为三个字符suffix- 用于生成文件名的后缀字符串;可能是null,在这种情况下将使用后缀".tmp"- 返回:
- 表示新创建的空文件的抽象路径名
- 抛出:
IllegalArgumentException- 如果prefix参数包含的字符少于三个IOException- 如果无法创建文件SecurityException- 如果安全管理器存在且其SecurityManager.checkWrite(java.lang.String)方法不允许创建文件- 自从:
- 1.2
- 参见:
-
compareTo
按字典顺序比较两个抽象路径名。此方法定义的顺序取决于底层系统。在 UNIX 系统上,字母大小写在比较路径名时很重要;在 Microsoft Windows 系统上则不是。- 指定者:
compareTo在接口Comparable<File>中- 参数:
pathname- 要与此抽象路径名进行比较的抽象路径名- 返回:
- 如果参数等于此抽象路径名,则为零;如果此抽象路径名按字典顺序小于参数,则值小于零;如果此抽象路径名按字典顺序大于参数,则值大于零
- 自从:
- 1.2
-
equals
测试此抽象路径名是否与给定对象相等。当且仅当参数不是null并且是与此抽象路径名相同的抽象路径名时,才返回true。两个抽象路径名是否相等取决于底层操作系统。在 UNIX 系统上,字母大小写在比较路径名时很重要;在 Microsoft Windows 系统上则不是。 -
hashCode
public int hashCode()计算此抽象路径名的哈希码。因为抽象路径名的相等性本质上是系统相关的,所以它们的哈希码的计算也是如此。在 UNIX 系统上,抽象路径名的散列码等于其路径名字符串的散列码与十进制值1234321的独占值 or。在Microsoft Windows 系统上,哈希码等于其路径名字符串转换为小写的哈希码与十进制值1234321的独占or。小写路径名字符串时不考虑locale。 -
toString
返回此抽象路径名的路径名字符串。这只是getPath()方法返回的字符串。 -
toPath
返回从此抽象路径构造的java.nio.file.Path对象。生成的Path与default-filesystem相关联。此方法的第一次调用就像调用它等同于计算表达式一样:
此方法的后续调用返回相同的FileSystems.getDefault().getPath(this.getPath());Path。如果此抽象路径名是空抽象路径名,则此方法返回可用于访问当前用户目录的
Path。- 返回:
-
一个
Path从这个抽象路径构造 - 抛出:
InvalidPathException- 如果无法从抽象路径构造Path对象(请参阅FileSystem.getPath)- 自从:
- 1.7
- 参见:
-