创新互联鸿蒙OS教程:鸿蒙OS File

File

java.lang.Object

|---java.io.File

public class File
extends Object
implements Serializable, Comparable

文件和目录路径名的抽象表示。

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

  1. 一个可选的与系统相关的前缀字符串,例如磁盘驱动器说明符、UNIX 根目录的“/”或 Microsoft Windows UNC 路径名的“”,以及
  2. 零个或多个字符串名称的序列。

抽象路径名中的第一个名称可以是目录名,或者在 Microsoft Windows UNC 路径名的情况下,可以是主机名。 抽象路径名中的每个后续名称都表示一个目录; 姓氏可以表示目录或文件。 空抽象路径名没有前缀和空名称序列。

路径名字符串与抽象路径名之间的转换本质上是系统相关的。 将抽象路径名转换为路径名字符串时,每个名称与下一个名称由默认分隔符的单个副本分隔。 默认名称分隔符由系统属性 file.separator 定义,并且在此类的公共静态字段 separator 和 separatorChar 中可用。 当路径名字符串转换为抽象路径名时,其中的名称可以由默认名称分隔符或底层系统支持的任何其他名称分隔符分隔。

路径名,无论是抽象的还是字符串形式的,都可以是绝对的或相对的。 绝对路径名是完整的,因为不需要其他信息来定位它表示的文件。 相反,相对路径名必须根据从其他路径名获取的信息来解释。 默认情况下,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。生成的 Path 可以与 Files 类一起使用,以提供对其他文件操作、文件属性和 I/O 异常的更有效和更广泛的访问,以帮助在对文件的操作失败时诊断错误。

Since:

JDK1.0

字段摘要

修饰符和类型字段描述
static StringpathSeparator系统相关的路径分隔符,为方便起见表示为字符串。
static charpathSeparatorChar系统相关的路径分隔符字符。
static Stringseparator系统相关的默认名称分隔符,为方便起见表示为字符串。
static charseparatorChar系统相关的默认名称分隔符。

构造函数摘要

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

方法总结

修饰符和类型方法描述
booleancanExecute()测试应用程序是否可以执行此抽象路径名表示的文件。
booleancanRead()测试应用程序是否可以读取此抽象路径名表示的文件。
booleancanWrite()测试应用程序是否可以修改此抽象路径名表示的文件。
intcompareTo(File pathname)按字典顺序比较两个抽象路径名。
booleancreateNewFile()当且仅当具有此名称的文件尚不存在时,以原子方式创建以此抽象路径名命名的新的空文件。
static FilecreateTempFile(String prefix, String suffix)在默认临时文件目录中创建一个空文件,使用给定的前缀和后缀生成其名称。
static FilecreateTempFile(String prefix, String suffix, File directory)在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。
booleandelete()删除此抽象路径名表示的文件或目录。
voiddeleteOnExit()请求在虚拟机终止时删除此抽象路径名表示的文件或目录。
booleanequals(Object obj)测试此抽象路径名是否与给定对象相等。
booleanexists()测试此抽象路径名表示的文件或目录是否存在。
FilegetAbsoluteFile()返回此抽象路径名的绝对形式。
StringgetAbsolutePath()返回此抽象路径名的绝对路径名字符串。
FilegetCanonicalFile()返回此抽象路径名的规范形式。
StringgetCanonicalPath()返回此抽象路径名的规范路径名字符串。
longgetFreeSpace()返回由此抽象路径名命名的分区中未分配的字节数。
StringgetName()返回此抽象路径名表示的文件或目录的名称。
StringgetParent()返回此抽象路径名的父目录的路径名字符串,如果此路径名未命名父目录,则返回 null。
FilegetParentFile()返回此抽象路径名的父级的抽象路径名,如果此路径名未命名父目录,则返回 null。
StringgetPath()将此抽象路径名转换为路径名字符串。
longgetTotalSpace()返回由此抽象路径名命名的分区的大小。
longgetUsableSpace()返回此抽象路径名命名的分区上此虚拟机可用的字节数。
inthashCode()计算此抽象路径名的哈希码。
booleanisAbsolute()测试此抽象路径名是否是绝对的。
booleanisDirectory()测试此抽象路径名表示的文件是否为目录。
booleanisFile()测试此抽象路径名表示的文件是否为普通文件。
booleanisHidden()测试此抽象路径名命名的文件是否为隐藏文件。
longlastModified()返回此抽象路径名表示的文件最后一次修改的时间。
longlength()返回此抽象路径名表示的文件的长度。
String[]list()返回一个字符串数组,命名此抽象路径名表示的目录中的文件和目录。
String[]list(FilenameFilter filter)返回一个字符串数组,命名由该抽象路径名表示的目录中满足指定过滤器的文件和目录。
File[]listFiles()返回一个抽象路径名数组,表示此抽象路径名表示的目录中的文件。
File[]listFiles(FileFilter filter)返回一个抽象路径名数组,表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
File[]listFiles(FilenameFilter filter)返回一个抽象路径名数组,表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
static File[]listRoots()列出可用的文件系统根。
booleanmkdir()创建由此抽象路径名命名的目录。
booleanmkdirs()创建由此抽象路径名命名的目录,包括任何必要但不存在的父目录。
booleanrenameTo(File dest)重命名此抽象路径名表示的文件。
booleansetExecutable(boolean executable)设置此抽象路径名的所有者执行权限的便捷方法。
booleansetExecutable(boolean executable, boolean ownerOnly)设置此抽象路径名的所有者或所有人的执行权限。
booleansetLastModified(long time)设置由此抽象路径名命名的文件或目录的最后修改时间。
booleansetReadable(boolean readable)设置所有者对此抽象路径名的读取权限的便捷方法。
booleansetReadable(boolean readable, boolean ownerOnly)设置此抽象路径名的所有者或所有人的读取权限。
booleansetReadOnly()标记由此抽象路径名命名的文件或目录,以便只允许读取操作。
booleansetWritable(boolean writable)设置所有者对此抽象路径名的写权限的便捷方法。
booleansetWritable(boolean writable, boolean ownerOnly)设置此抽象路径名的所有者或所有人的写权限。
PathtoPath()返回从 this 抽象路径构造的 Path 对象。
StringtoString()返回此抽象路径名的路径名字符串。
URItoURI()构造一个文件:表示此抽象路径名的 URI。
URLtoURL()已弃用。 此方法不会自动转义 URL 中的非法字符。 建议新代码将抽象路径名转换为 URL,首先通过 toURI 方法将其转换为 URI,然后通过 URI.toURL 方法将 URI 转换为 URL。
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait

字段详细信息

pathSeparator

public static final String pathSeparator

系统相关的路径分隔符,为方便起见表示为字符串。 该字符串包含单个字符,即 pathSeparatorChar。

pathSeparatorChar

public static final char pathSeparatorChar

系统相关的路径分隔符字符。 该字段被初始化为包含系统属性 path.separator 值的第一个字符。 此字符用于分隔作为路径列表给出的文件序列中的文件名。 在 UNIX 系统上,这个字符是 ':'; 在 Microsoft Windows 系统上它是 ';'。

separator

public static final String separator

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

separatorChar

public static final char separatorChar

系统相关的默认名称分隔符。 该字段被初始化为包含系统属性 file.separator 值的第一个字符。 在 UNIX 系统上,该字段的值为 '/'; 在 Microsoft Windows 系统上它是 ''。

构造函数详细信息

File

public File(String pathname)

通过将给定的路径名字符串转换为抽象路径名来创建一个新的 File 实例。 如果给定的字符串是空字符串,则结果是空的抽象路径名。

参数:

参数名称参数描述
pathname路径名字符串

Throws:

Throw名称Throw描述
NullPointerException如果路径名参数为空

File

public File(String parent, String child)

从父路径名字符串和子路径名字符串创建一个新的 File 实例。

如果 parent 为 null,则创建新的 File 实例,就好像通过在给定的子路径名字符串上调用单参数 File 构造函数一样。

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

参数:

参数名称参数描述
parent父路径名字符串
child子路径名字符串

Throws:

Throw名称Throw描述
NullPointerException如果 child 为空

File

public File(File parent, String child)

从父抽象路径名和子路径名字符串创建一个新的 File 实例。

如果 parent 为 null,则创建新的 File 实例,就好像通过在给定的子路径名字符串上调用单参数 File 构造函数一样。

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

参数:

参数名称参数描述
parent父抽象路径名
child子路径名字符串

Throws:

Throw名称Throw描述
NullPointerException如果 child 为空

File

public File(URI uri)

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

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

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

新文件(f.toURI()).equals(f.getAbsoluteFile())

只要原始抽象路径名、URI 和新的抽象路径名都是在同一个 Java 虚拟机中创建的(可能是不同的调用)。 但是,当文件:在一个操作系统上的虚拟机中创建的 URI 被转换为不同操作系统上的虚拟机中的抽象路径名时,这种关系通常不成立。

参数:

参数名称参数描述
uri一个绝对的、分层的 URI,其方案等于“文件”、一个非空路径组件以及未定义的权限、查询和片段组件

Throws:

Throw名称Throw描述
NullPointerException如果 uri 为空
IllegalArgumentException如果参数的前提条件不成立

Since:

1.4

方法详情

getName

public String getName()

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

返回:

此抽象路径名表示的文件或目录的名称,如果此路径名的名称序列为空,则为空字符串

getParent

public String getParent()

返回此抽象路径名的父目录的路径名字符串,如果此路径名未命名父目录,则返回 null。

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

返回:

此抽象路径名命名的父目录的路径名字符串,如果此路径名未命名父目录,则为 null

getParentFile

public File getParentFile()

返回此抽象路径名的父级的抽象路径名,如果此路径名未命名父目录,则返回 null。

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

返回:

此抽象路径名命名的父目录的抽象路径名,如果此路径名未命名父目录,则为 null

Since:

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 系统上,通过将相对路径名解析为由路径名命名的驱动器的当前目录(如果有),从而使相对路径名成为绝对路径; 如果不是,则针对当前用户目录进行解析。

返回:

表示与此抽象路径名相同的文件或目录的绝对路径名字符串

Throws:

Throw名称Throw描述
SecurityException如果无法访问所需的系统属性值。

getAbsoluteFile

public File getAbsoluteFile()

返回此抽象路径名的绝对形式。 等效于新文件(this.getAbsolutePath())。

返回:

表示与此抽象路径名相同的文件或目录的绝对抽象路径名

Throws:

Throw名称Throw描述
SecurityException如果无法访问所需的系统属性值。

Since:

1.2

getCanonicalPath

public String getCanonicalPath() throws IOException

返回此抽象路径名的规范路径名字符串。

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

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

返回:

表示与此抽象路径名相同的文件或目录的规范路径名字符串

Throws:

Throw名称Throw描述
IOException如果发生 I/O 错误,这是可能的,因为规范路径名的构造可能需要文件系统查询
SecurityException如果无法访问所需的系统属性值,或者安全管理器存在且其 SecurityManager.checkRead(java.io.FileDescriptor) 方法拒绝读取文件

Since:

JDK1.1

getCanonicalFile

public File getCanonicalFile() throws IOException

返回此抽象路径名的规范形式。 等效于新文件(this.getCanonicalPath())。

返回:

表示与此抽象路径名相同的文件或目录的规范路径名字符串

Throws:

Throw名称Throw描述
IOException如果发生 I/O 错误,这是可能的,因为规范路径名的构造可能需要文件系统查询
SecurityException如果无法访问所需的系统属性值,或者安全管理器存在且其 SecurityManager.checkRead(java.io.FileDescriptor) 方法拒绝读取文件

Since:

1.2

toURL

@Deprecated public URL toURL() throws MalformedURLException

已弃用。 此方法不会自动转义 URL 中的非法字符。 建议新代码将抽象路径名转换为 URL,首先通过 toURI 方法将其转换为 URI,然后通过 URI.toURL 方法将 URI 转换为 URL。

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

返回:

表示等效文件 URL 的 URL 对象

Throws:

Throw名称Throw描述
MalformedURLException如果路径无法解析为 URL

Since:

1.2

toURI

public URI toURI()

构造一个文件:表示此抽象路径名的 URI。

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

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

new File( f.toURI()).equals( f.getAbsoluteFile())

只要原始抽象路径名、URI 和新的抽象路径名都是在同一个 Java 虚拟机中创建的(可能是不同的调用)。但是,由于抽象路径名的系统相关性,当一个文件:在一个操作系统上的虚拟机中创建的 URI 被转换为不同操作系统上的虚拟机中的抽象路径名时,这种关系通常不成立.

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

返回:

具有等于“文件”的方案的绝对分层 URI、表示此抽象路径名的路径以及未定义的权限、查询和片段组件

Throws:

Throw名称Throw描述
SecurityException如果无法访问所需的系统属性值。

Since:

1.4

canRead

public boolean canRead()

测试应用程序是否可以读取此抽象路径名表示的文件。 在某些平台上,可以使用特殊权限启动 Java 虚拟机,使其能够读取标记为不可读的文件。 因此,即使文件没有读取权限,此方法也可能返回 true。

返回:

当且仅当此抽象路径名指定的文件存在并且应用程序可以读取时,才为 true; 否则为 false

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件的读取访问权限

canWrite

public boolean canWrite()

测试应用程序是否可以修改此抽象路径名表示的文件。 在某些平台上,可以使用允许它修改标记为只读的文件的特殊权限启动 Java 虚拟机。 因此,即使文件被标记为只读,此方法也可能返回 true。

返回:

当且仅当文件系统实际上包含由此抽象路径名表示的文件并且允许应用程序写入该文件时,才返回 true; 否则为 false。

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager.checkWrite(java.lang.String) 方法拒绝对文件的写访问

exists

public boolean exists()

测试此抽象路径名表示的文件或目录是否存在。

返回:

当且仅当此抽象路径名表示的文件或目录存在时才为 true; 否则为 false

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件或目录的读取访问权限

isDirectory

public boolean isDirectory()

测试此抽象路径名表示的文件是否为目录。

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

返回:

当且仅当此抽象路径名表示的文件存在并且是目录时才为 true; 否则为 false

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件的读取访问权限

isFile

public boolean isFile()

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

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

返回:

当且仅当此抽象路径名表示的文件存在并且是普通文件时才为 true; 否则为 false

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件的读取访问权限

isHidden

public boolean isHidden()

测试此抽象路径名命名的文件是否为隐藏文件。 隐藏的确切定义取决于系统。 在 UNIX 系统上,如果文件名以句点字符 ('.') 开头,则文件被认为是隐藏的。 在 Microsoft Windows 系统上,如果文件在文件系统中被标记为隐藏文件,则该文件被视为隐藏文件。

返回:

当且仅当此抽象路径名表示的文件根据底层平台的约定被隐藏时才为 true

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件的读取访问权限

Since:

1.2

lastModified

public long lastModified()

返回此抽象路径名表示的文件最后一次修改的时间。

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

返回:

表示文件最后修改时间的长值,以自纪元(格林威治标准时间 00:00:00,1970 年 1 月 1 日)以来的毫秒数为单位,如果文件不存在或发生 I/O 错误,则为 0L

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件的读取访问权限

length

public long length()

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

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

返回:

此抽象路径名表示的文件的长度(以字节为单位),如果文件不存在,则为 0L。 对于表示系统相关实体(例如设备或管道)的路径名,某些操作系统可能会返回 0L。

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件的读取访问权限

createNewFile

public boolean createNewFile() throws IOException

当且仅当具有此名称的文件尚不存在时,以原子方式创建以此抽象路径名命名的新的空文件。 检查文件是否存在以及如果文件不存在则创建文件是单个操作,相对于可能影响文件的所有其他文件系统活动而言是原子操作。

注意:此方法不应用于文件锁定,因为生成的协议不能可靠地工作。 应该改用 FileLock 工具。

返回:

如果命名文件不存在且已成功创建,则为 true; 如果命名文件已经存在,则返回 false

Throws:

Throw每次Throw描述
IOException如果发生 I/O 错误
SecurityException如果存在安全管理器并且其 SecurityManager.checkWrite(java.lang.String) 方法拒绝对文件的写访问

Since:

1.2

delete

public boolean delete()

删除此抽象路径名表示的文件或目录。 如果此路径名表示一个目录,则该目录必须为空才能被删除。

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

返回:

当且仅当文件或目录被成功删除时为 true; 否则为 false

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager.checkDelete(java.lang.String) 方法拒绝删除对文件的访问权限

deleteOnExit

public void deleteOnExit()

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

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

注意:此方法不应用于文件锁定,因为生成的协议不能可靠地工作。 应该改用 FileLock 工具。

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager.checkDelete(java.lang.String) 方法拒绝删除对文件的访问权限

Since:

1.2

list

public String[] list()

返回一个字符串数组,命名此抽象路径名表示的目录中的文件和目录。

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

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

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

返回:

一个字符串数组,命名此抽象路径名表示的目录中的文件和目录。如果目录为空,则数组将为空。如果此抽象路径名不表示目录,或者发生 I/O 错误,则返回 null。

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager#checkRead(String) 方法拒绝对目录的读取访问权限

list

public String[] list(FilenameFilter filter)

返回一个字符串数组,命名由该抽象路径名表示的目录中满足指定过滤器的文件和目录。 此方法的行为与 list() 方法的行为相同,只是返回数组中的字符串必须满足过滤器。 如果给定的过滤器为空,则接受所有名称。 否则,当且仅当在此抽象路径名和它所表示的目录中的文件或目录的名称上调用过滤器的 FilenameFilter#accept 方法时结果值为 true 时,名称才满足过滤器。

参数:

参数名称参数描述
filter文件名过滤器

返回:

一个字符串数组,命名由给定过滤器接受的此抽象路径名表示的目录中的文件和目录。 如果目录为空或过滤器不接受任何名称,则数组将为空。 如果此抽象路径名不表示目录,或者发生 I/O 错误,则返回 null。

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager#checkRead(String) 方法拒绝对目录的读取访问权限

listFiles

public File[] listFiles()

返回一个抽象路径名数组,表示此抽象路径名表示的目录中的文件。

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

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

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

返回:

一组抽象路径名,表示由该抽象路径名表示的目录中的文件和目录。如果目录为空,则数组将为空。如果此抽象路径名不表示目录,或者发生 I/O 错误,则返回 null。

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager#checkRead(String) 方法拒绝对目录的读取访问权限

Since:

1.2

listFiles

public File[] listFiles(FilenameFilter filter)

返回一个抽象路径名数组,表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 此方法的行为与 listFiles() 方法的行为相同,只是返回数组中的路径名必须满足过滤器。 如果给定的过滤器为空,则接受所有路径名。 否则,当且仅当在此抽象路径名和它所表示的目录中的文件或目录的名称上调用过滤器的 FilenameFilter#accept 方法时结果值为 true 时,路径名才满足过滤器。

参数:

参数名称参数描述
filter文件名过滤器

返回:

一组抽象路径名,表示由该抽象路径名表示的目录中的文件和目录。 如果目录为空,则数组将为空。 如果此抽象路径名不表示目录,或者发生 I/O 错误,则返回 null。

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager#checkRead(String) 方法拒绝对目录的读取访问权限

Since:

1.2

listFiles

public File[] listFiles(FileFilter filter)

返回一个抽象路径名数组,表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 此方法的行为与 listFiles() 方法的行为相同,只是返回数组中的路径名必须满足过滤器。 如果给定的过滤器为空,则接受所有路径名。 否则,当且仅当在路径名上调用过滤器的 FileFilter#accept 方法时结果为 true 时,路径名才满足过滤器。

参数:

参数名称参数描述
filter文件过滤器

返回:

一组抽象路径名,表示由该抽象路径名表示的目录中的文件和目录。 如果目录为空,则数组将为空。 如果此抽象路径名不表示目录,或者发生 I/O 错误,则返回 null。

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager#checkRead(String) 方法拒绝对目录的读取访问权限

Since:

1.2

mkdir

public boolean mkdir()

创建由此抽象路径名命名的目录。

返回:

当且仅当目录被创建时为 true; 否则为 false

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager.checkWrite(java.lang.String) 方法不允许创建命名目录

mkdirs

public boolean mkdirs()

创建由此抽象路径名命名的目录,包括任何必要但不存在的父目录。 请注意,如果此操作失败,它可能已成功创建一些必要的父目录。

返回:

当且仅当创建了目录以及所有必要的父目录时才为 true; 否则为 false

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法不允许验证命名目录和所有必要父目录的存在; 或者如果 SecurityManager.checkWrite(java.lang.String) 方法不允许创建命名目录和所有必要的父目录

renameTo

public boolean renameTo(File dest)

重命名此抽象路径名表示的文件。

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

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

参数:

参数名称参数描述
dest命名文件的新抽象路径名

返回:

当且仅当重命名成功时为 true; 否则为 false

Throws:

Throw名称Throw描述
SecurityException如果安全管理器存在且其 SecurityManager.checkWrite(java.lang.String) 方法拒绝对旧路径名或新路径名的写访问
NullPointerException如果参数 dest 为空

setLastModified

public boolean setLastModified(long time)

设置由此抽象路径名命名的文件或目录的最后修改时间。

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

参数:

参数名称参数描述
time新的最后修改时间,自纪元以来的毫秒数(格林威治标准时间 00:00:00,1970 年 1 月 1 日)

返回:

当且仅当操作成功时为 true; 否则为 false

Throws:

Throw名称Throw描述
IllegalArgumentException如果参数是否定的
SecurityException如果安全管理器存在并且其 SecurityManager.checkWrite(java.lang.String) 方法拒绝对指定文件的写访问

Since:

1.2

setReadOnly

public boolean setReadOnly()

标记由此抽象路径名命名的文件或目录,以便只允许读取操作。 调用此方法后,文件或目录在被删除或标记为允许写入访问之前不会更改。 在某些平台上,可以使用允许它修改标记为只读的文件的特殊权限启动 Java 虚拟机。 是否可以删除只读文件或目录取决于底层系统。

返回:

当且仅当操作成功时为 true; 否则为 false

Throws:

Throw名称Throw描述
SecurityException如果安全管理器存在并且其 SecurityManager.checkWrite(java.lang.String) 方法拒绝对指定文件的写访问

Since:

1.2

setWritable

public boolean setWritable(boolean writable, boolean ownerOnly)

设置此抽象路径名的所有者或所有人的写权限。 在某些平台上,可以使用允许它修改不允许写入操作的文件的特殊权限来启动 Java 虚拟机。

Files 类定义了对文件属性(包括文件权限)进行操作的方法。 当需要对文件权限进行更精细的操作时,可以使用此选项。

参数:

参数名称参数描述
writable如果为 true,则设置访问权限以允许写操作; 如果为 false 则禁止写操作
ownerOnly如果为true,则写权限仅适用于所有者的写权限; 否则,它适用于所有人。 如果底层文件系统无法区分所有者的写权限和其他人的写权限,那么该权限将适用于每个人,而不管这个值是多少。

返回:

当且仅当操作成功时才为 true。 如果用户无权更改此抽象路径名的访问权限,则操作将失败。

Throws:

Throw名称Throw描述
SecurityException如果安全管理器存在并且其 SecurityManager.checkWrite(java.lang.String) 方法拒绝对指定文件的写访问

Since:

1.6

setWritable

public boolean setWritable(boolean writable)

设置所有者对此抽象路径名的写权限的便捷方法。 在某些平台上,可以使用允许它修改不允许写入操作的文件的特殊权限来启动 Java 虚拟机。

以 file.setWritable(arg) 形式调用此方法的行为与调用完全相同

     file.setWritable(arg, true)

参数:

参数名称参数描述
writable如果为 true,则设置访问权限以允许写操作; 如果为 false 则禁止写操作

返回:

当且仅当操作成功时才为 true。 如果用户无权更改此抽象路径名的访问权限,则操作将失败。

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager.checkWrite(java.lang.String) 方法拒绝对文件的写访问

Since:

1.6

setReadable

public boolean setReadable(boolean readable, boolean ownerOnly)

设置此抽象路径名的所有者或所有人的读取权限。 在某些平台上,可以使用特殊权限启动 Java 虚拟机,使其能够读取标记为不可读的文件。

Files 类定义了对文件属性(包括文件权限)进行操作的方法。 当需要对文件权限进行更精细的操作时,可以使用此选项。

参数:

参数名称参数描述
readable如果为 true,则设置访问权限以允许读取操作; 如果为 false 则不允许读取操作
ownerOnly如果为 true,则读取权限仅适用于所有者的读取权限; 否则,它适用于所有人。 如果底层文件系统无法区分所有者的读取权限和其他人的读取权限,则该权限将适用于所有人,无论此值如何。

返回:

当且仅当操作成功时才为 true。 如果用户无权更改此抽象路径名的访问权限,则操作将失败。 如果 readable 为 false 并且底层文件系统没有实现读权限,那么操作将失败。

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager.checkWrite(java.lang.String) 方法拒绝对文件的写访问

Since:

1.6

setReadable

public boolean setReadable(boolean readable)

设置所有者对此抽象路径名的读取权限的便捷方法。 在某些平台上,可以使用特殊权限启动 Java 虚拟机,使其能够读取标记为不可读的文件。

调用这种形式为 file.setReadable(arg) 的方法的行为与调用完全相同

     file.setReadable(arg, true)

参数:

参数名称参数描述
readable如果为 true,则设置访问权限以允许读取操作; 如果为 false 则不允许读取操作

返回:

当且仅当操作成功时才为 true。 如果用户无权更改此抽象路径名的访问权限,则操作将失败。 如果 readable 为 false 并且底层文件系统没有实现读权限,那么操作将失败。

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager.checkWrite(java.lang.String) 方法拒绝对文件的写访问

Since:

1.6

setExecutable

public boolean setExecutable(boolean executable, boolean ownerOnly)

设置此抽象路径名的所有者或所有人的执行权限。 在某些平台上,可以使用允许它执行未标记为可执行文件的特殊权限来启动 Java 虚拟机。

Files 类定义了对文件属性(包括文件权限)进行操作的方法。 当需要对文件权限进行更精细的操作时,可以使用此选项。

参数:

参数名称参数描述
executable如果为 true,则设置访问权限以允许执行操作; 如果为 false 则不允许执行操作
ownerOnly如果为 true,则执行权限仅适用于所有者的执行权限; 否则,它适用于所有人。 如果底层文件系统无法区分所有者的执行权限和其他人的执行权限,则该权限将适用于所有人,无论此值如何。

返回:

当且仅当操作成功时才为 true。 如果用户无权更改此抽象路径名的访问权限,则操作将失败。 如果 executable 为 false 并且底层文件系统没有实现执行权限,则操作将失败。

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager.checkWrite(java.lang.String) 方法拒绝对文件的写访问

Since:

1.6

setExecutable

public boolean setExecutable(boolean executable)

设置此抽象路径名的所有者执行权限的便捷方法。 在某些平台上,可以使用允许它执行未标记为可执行文件的特殊权限来启动 Java 虚拟机。

调用这种形式为 file.setExcutable(arg) 的方法的行为与调用完全相同

     file.setExecutable(arg, true)

参数:

参数名称参数描述
executable如果为 true,则设置访问权限以允许执行操作; 如果为 false 则不允许执行操作

返回:

当且仅当操作成功时才为 true。 如果用户无权更改此抽象路径名的访问权限,则操作将失败。 如果 executable 为 false 并且底层文件系统没有实现执行权限,则操作将失败。

Throws:

Throw名称Throw描述
SecurityException如果存在安全管理器并且其 SecurityManager.checkWrite(java.lang.String) 方法拒绝对文件的写访问

Since:

1.6

canExecute

public boolean canExecute()

测试应用程序是否可以执行此抽象路径名表示的文件。 在某些平台上,可以使用允许它执行未标记为可执行文件的特殊权限来启动 Java 虚拟机。 因此,即使文件没有执行权限,此方法也可能返回 true。

返回:

当且仅当抽象路径名存在并且允许应用程序执行文件时才为 true

Throws:

Throw名称Throw描述
SecurityException如果安全管理器存在并且其 SecurityManager.checkExec(java.lang.String) 方法拒绝执行对文件的访问

Since:

1.6

listRoots

public static File[] listRoots()

列出可用的文件系统根。

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

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

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

与此类中的大多数方法不同,此方法不会引发安全异常。如果存在安全管理器并且其 SecurityManager#checkRead(St

当前标题:创新互联鸿蒙OS教程:鸿蒙OS File
网站链接:http://www.shufengxianlan.com/qtweb/news14/453214.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联