Java 中的 java.io.File 类代表文件和目录路径名,并以抽象的方式表示它们。这个类可以用来创建文件和目录、搜索文件、删除文件等操作。
File 对象代表磁盘上的实际文件或目录。
File 类构造器
以下是创建 File 对象的构造器列表:
-
File(File parent, String child) 创建一个新的 File 实例,使用父路径名和子路径字符串。
-
File(String pathname) 使用给定的路径字符串创建一个新的 File 实例。
-
File(String parent, String child) 使用父路径字符串和子路径字符串创建一个新的 File 实例。
-
File(URI uri) 使用给定的 file: URI 创建一个新的 File 实例。
File 类方法
一旦你有了 File 对象,就可以使用一系列帮助方法来操作文件:
-
public String getName() 返回由这个抽象路径名所表示的文件或目录的名称。
-
public String getParent() 返回这个抽象路径名的父路径名字符串,如果没有父目录则返回 null。
-
public File getParentFile() 返回这个抽象路径名的父路径名的抽象路径名对象,如果没有父目录则返回 null。
-
public String getPath() 将这个抽象路径名转换成路径名字符串。
-
public boolean isAbsolute() 测试这个抽象路径名是否是绝对路径。如果是绝对路径,则返回 true,否则返回 false。
-
public String getAbsolutePath() 返回这个抽象路径名的绝对路径名字符串。
-
public boolean canRead() 测试应用程序是否可以读取由这个抽象路径名表示的文件。只有当指定的文件存在并且可以被应用程序读取时才返回 true,否则返回 false。
-
public boolean canWrite() 测试应用程序是否可以修改由这个抽象路径名表示的文件。只有当文件系统确实包含一个由这个抽象路径名表示的文件,并且应用程序允许写入该文件时才返回 true,否则返回 false。
-
public boolean exists() 测试由这个抽象路径名表示的文件或目录是否存在。只有当由这个抽象路径名表示的文件或目录存在时才返回 true,否则返回 false。
-
public boolean isDirectory() 测试由这个抽象路径名表示的文件是否是一个目录。只有当由这个抽象路径名表示的文件存在并且是一个目录时才返回 true,否则返回 false。
-
public boolean isFile() 测试由这个抽象路径名表示的文件是否是一个普通文件。一个文件是普通的,如果它不是一个目录,并且满足其他系统依赖的标准。任何由 Java 应用程序创建的非目录文件都是保证为普通文件。只有当由这个抽象路径名表示的文件存在并且是一个普通文件时才返回 true,否则返回 false。
-
public long lastModified() 返回由这个抽象路径名表示的文件最后修改的时间。返回一个表示自纪元(1970 年 1 月 1 日 00:00:00 GMT)以来的毫秒数的 long 值,或者如果文件不存在或发生 I/O 错误则返回 0L。
-
public long length() 返回由这个抽象路径名表示的文件长度。如果这个路径名表示的是一个目录,则返回值是未定义的。
-
public boolean createNewFile() throws IOException 只有在没有同名文件存在的情况下,原子地创建一个新的空文件。如果命名的文件不存在并且成功创建,则返回 true,否则返回 false。
-
public boolean delete() 删除由这个抽象路径名表示的文件或目录。如果这个路径名表示的是一个目录,则该目录必须为空才能被删除。只有当文件或目录成功删除时才返回 true,否则返回 false。
-
public void deleteOnExit() 请求在虚拟机终止时删除由这个抽象路径名表示的文件或目录。
-
public String[] list() 返回一个字符串数组,包含由这个抽象路径名表示的目录中的文件和目录的名称。
-
public String[] list(FilenameFilter filter) 返回一个字符串数组,包含由这个抽象路径名表示的目录中的文件和目录的名称,并且这些名称满足指定的过滤器。
-
public File[] listFiles() 返回一个抽象路径名数组,表示由这个抽象路径名表示的目录中的文件。
-
public File[] listFiles(FileFilter filter) 返回一个抽象路径名数组,表示由这个抽象路径名表示的目录中的文件和目录,并且这些名称满足指定的过滤器。
-
public boolean mkdir() 创建由这个抽象路径名表示的目录。只有当目录被创建时才返回 true,否则返回 false。
-
public boolean mkdirs() 创建由这个抽象路径名表示的目录,包括所有必要的但不存在的父目录。只有当目录及其所有必要的父目录都被创建时才返回 true,否则返回 false。
-
public boolean renameTo(File dest) 重命名由这个抽象路径名表示的文件。只有当重命名成功时才返回 true,否则返回 false。
-
public boolean setLastModified(long time) 设置由这个抽象路径名表示的文件或目录的最后修改时间。只有当操作成功时才返回 true,否则返回 false。
-
public boolean setReadOnly() 将由这个抽象路径名表示的文件或目录标记为只读。只有当操作成功时才返回 true,否则返回 false。
-
public static File createTempFile(String prefix, String suffix, File directory) throws IOException 在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串来生成其名称。返回表示新创建的空文件的抽象路径名。
-
public static File createTempFile(String prefix, String suffix) throws IOException 在默认的临时文件目录中创建一个空文件,使用给定的前缀和后缀来生成其名称。调用此方法相当于调用 createTempFile(prefix, suffix, null)。返回表示新创建的空文件的抽象路径名。
-
public int compareTo(File pathname) 按字典顺序比较两个抽象路径名。如果参数等于这个抽象路径名,则返回零;如果这个抽象路径名按字典顺序小于参数,则返回一个小于零的值;如果这个抽象路径名按字典顺序大于参数,则返回一个大于零的值。
-
public int compareTo(Object o) 按字典顺序将这个抽象路径名与其他对象进行比较。如果参数等于这个抽象路径名,则返回零;如果这个抽象路径名按字典顺序小于参数,则返回一个小于零的值;如果这个抽象路径名按字典顺序大于参数,则返回一个大于零的值。
-
public boolean equals(Object obj) 测试这个抽象路径名是否与给定的对象相等。只有当参数不是 null 并且是一个表示与这个抽象路径名相同的文件或目录的抽象路径名时才返回 true。
-
public String toString() 返回这个抽象路径名的路径名字符串。这仅仅是 getPath() 方法返回的字符串。
Java File 类示例
下面是一个简单的例子来演示 File 对象的使用:
package com.tutorialspoint;
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
File f = null;
String[] strs = {"test1.txt", "test2.txt"};
try {
for(String s : strs) {
f = new File(s);
boolean bool = f.canExecute();
String a = f.getAbsolutePath();
System.out.print(a);
System.out.println(" is executable: " + bool);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
假设当前目录中有一个可执行文件 test1.txt 和另一个不可执行文件 test2.txt。编译并运行上述程序,将会得到以下输出:
/home/cg/root/2880380/test1.txt is executable: false
/home/cg/root/2880380/test2.txt is executable: false
注意,尽管我们假设 test1.txt 是可执行的,但在上面的例子中,两个文件都报告为不可执行。这是因为 canExecute() 方法检查文件权限,而这些权限取决于操作系统和文件系统的设置。如果你想要测试文件是否真的可执行,你需要确保文件具有正确的权限设置。