1. 概述
在Java中,java.io.File
类是用于表示文件和目录路径的抽象概念。它提供了一系列方法来创建、查找、删除以及操作文件和目录。通过File类,开发者可以方便地进行文件系统的操作,而不需要直接与底层操作系统交互。
2. 构造方法
File
类提供了多种构造方法,允许用户根据不同的需求来创建File实例:
public File(String pathname)
:通过给定的路径名字符串创建一个新的File实例。public File(String parent, String child)
:通过父路径名和子路径名字符串创建File实例,系统会自动拼接路径。public File(File parent, String child)
:通过父File对象和子路径名字符串创建File实例。
示例代码
// 文件路径
String filePath1 = "C:\\example\\file.txt";
File file1 = new File(filePath1);
// 通过父路径和子路径
String parentDir = "C:\\example";
String childFile = "file.txt";
File file2 = new File(parentDir, childFile);
// 通过父File对象和子路径
File parentFile = new File("C:\\example");
File file3 = new File(parentFile, "file.txt");
小贴士:创建File对象时,不论指定的路径是否存在,File对象都会被成功创建。这使得File类非常灵活。
3. 常用方法
方法名 | 功能描述 |
---|---|
getAbsolutePath() | 获取文件的绝对路径 |
getPath() | 获取文件的路径 |
getName() | 获取文件名 |
getParent() | 获取父目录 |
exists() | 判断文件或目录是否存在 |
isFile() | 判断是否是文件 |
isDirectory() | 判断是否是目录 |
isAbsolute() | 判断路径是否为绝对路径 |
isRelative() | 判断路径是否为相对路径 |
canRead() | 判断文件是否可读 |
canWrite() | 判断文件是否可写 |
isHidden() | 判断文件是否为隐藏文件 |
lastModified() | 获取文件最后修改时间 |
length() | 获取文件大小(字节数) |
createNewFile() | 创建一个新的文件 |
mkdir() | 创建一个目录 |
mkdirs() | 创建多级目录 |
delete() | 删除文件或空目录 |
renameTo(File dest) | 重命名文件或目录 |
listFiles() | 返回一个File数组,表示该目录下的所有文件和子目录 |
list() | 返回一个字符串数组,表示该目录下的所有文件和子目录的名称 |
获取文件信息的方法
public String getAbsolutePath()
:返回File的绝对路径。public String getPath()
:返回File的路径名字符串。public String getName()
:返回文件或目录的名称。public long length()
:返回文件的字节长度;如果是目录,则返回值未定义。
示例代码
public class FileInfo {
public static void main(String[] args) {
File file = new File("C:\\example\\file.txt");
System.out.println("绝对路径: " + file.getAbsolutePath());
System.out.println("构造路径: " + file.getPath());
System.out.println("文件名称: " + file.getName());
System.out.println("文件长度: " + file.length() + " 字节");
}
}
4. 路径的理解
- 绝对路径:从根目录开始的完整路径,例如
C:\example\file.txt
。 - 相对路径:相对于当前工作目录的路径,例如
file.txt
,在开发中常用。
5. 判断文件或目录的方法
public boolean exists()
:检查文件或目录是否存在。public boolean isDirectory()
:判断File对象是否为目录。public boolean isFile()
:判断File对象是否为文件。
示例代码
public class FileCheck {
public static void main(String[] args) {
File file = new File("C:\\example\\file.txt");
System.out.println("文件存在吗: " + file.exists());
System.out.println("它是一个文件吗: " + file.isFile());
System.out.println("它是一个目录吗: " + file.isDirectory());
}
}
6. 创建和删除文件与目录的方法
public boolean createNewFile()
:创建一个新文件(如果尚不存在)。public boolean delete()
:删除文件或目录。public boolean mkdir()
:创建目录。public boolean mkdirs()
:创建目录及其所有必需的父目录。
示例代码
public class FileOperations {
public static void main(String[] args) throws IOException {
File newFile = new File("C:\\example\\newFile.txt");
System.out.println("文件存在吗: " + newFile.exists());
System.out.println("创建文件成功吗: " + newFile.createNewFile());
File newDir = new File("C:\\example\\newDir");
System.out.println("创建目录成功吗: " + newDir.mkdir());
File multiDir = new File("C:\\example\\dir1\\dir2");
System.out.println("创建多级目录成功吗: " + multiDir.mkdirs());
System.out.println("删除文件成功吗: " + newFile.delete());
System.out.println("删除目录成功吗: " + newDir.delete());
}
}
7. 目录的遍历
public String[] list()
:返回目录中所有子文件和目录的名称。public File[] listFiles()
:返回目录中所有子文件和目录的File对象数组。
示例代码
public class DirectoryTraversal {
public static void main(String[] args) {
File directory = new File("C:\\example");
// 获取目录下的文件和文件夹名称
String[] fileNames = directory.list();
if (fileNames != null) {
for (String name : fileNames) {
System.out.println(name);
}
}
// 获取目录下的文件和文件夹对象
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
System.out.println(file.getAbsolutePath());
}
}
}
}
在实际开发中,File类被广泛应用于文件上传下载、文件处理、目录管理等场景。