Java中的File类位于java.io包下,主要用于表示文件或目录的路径信息,提供了一系列操作文件和目录的基础API,是Java IO体系中处理文件相关需求的基础类。它并不直接操作文件的内容,而是对文件的属性、路径、存在性等信息进行管理。

File类基础构造方法
使用File类前需要先创建实例,常用的构造方法有以下几种:
- File(String pathname):根据指定的路径字符串创建File实例
- File(String parent, String child):根据父路径和子路径拼接创建File实例
- File(File parent, String child):根据父File对象和子路径拼接创建File实例
以下是构造方法的简单示例:
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
// 直接传入完整路径
File file1 = new File("D:/test/demo.txt");
// 父路径和子路径分开传入
File file2 = new File("D:/test", "demo.txt");
// 父File对象和子路径拼接
File parentDir = new File("D:/test");
File file3 = new File(parentDir, "demo.txt");
}
}
文件与目录创建操作
File类提供了创建文件和目录的对应方法,需要注意区分文件和目录的创建逻辑:
创建普通文件
使用createNewFile()方法可以创建新的普通文件,该方法返回布尔值表示是否创建成功,如果文件已经存在则返回false,创建过程需要捕获IOException异常。
import java.io.File;
import java.io.IOException;
public class CreateFileDemo {
public static void main(String[] args) {
File file = new File("D:/test/newFile.txt");
try {
// 判断文件不存在时再创建
if (!file.exists()) {
boolean isSuccess = file.createNewFile();
System.out.println("文件创建结果:" + isSuccess);
} else {
System.out.println("文件已存在,无需创建");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
创建目录
创建目录有两个常用方法:mkdir()只能创建单级目录,如果父目录不存在会返回false;mkdirs()可以创建多级目录,会自动创建所有不存在的父目录。
import java.io.File;
public class CreateDirDemo {
public static void main(String[] args) {
// 创建单级目录,要求父目录D:/test已存在
File singleDir = new File("D:/test/singleDir");
boolean singleResult = singleDir.mkdir();
System.out.println("单级目录创建结果:" + singleResult);
// 创建多级目录,父目录不存在会自动创建
File multiDir = new File("D:/test/a/b/c");
boolean multiResult = multiDir.mkdirs();
System.out.println("多级目录创建结果:" + multiResult);
}
}
文件与目录删除操作
使用delete()方法可以删除文件或目录,需要注意该方法只能删除空目录,如果目录下有内容则删除失败,返回false。
import java.io.File;
public class DeleteDemo {
public static void main(String[] args) {
// 删除普通文件
File file = new File("D:/test/newFile.txt");
if (file.exists()) {
boolean fileDeleteResult = file.delete();
System.out.println("文件删除结果:" + fileDeleteResult);
}
// 删除空目录
File emptyDir = new File("D:/test/singleDir");
if (emptyDir.exists()) {
boolean dirDeleteResult = emptyDir.delete();
System.out.println("空目录删除结果:" + dirDeleteResult);
}
}
}
文件重命名操作
使用renameTo(File dest)方法可以实现文件或目录的重命名,也可以实现文件的移动操作,方法的返回值为布尔类型表示操作是否成功。
import java.io.File;
public class RenameDemo {
public static void main(String[] args) {
File oldFile = new File("D:/test/demo.txt");
File newFile = new File("D:/test/demo_renamed.txt");
if (oldFile.exists()) {
boolean renameResult = oldFile.renameTo(newFile);
System.out.println("重命名结果:" + renameResult);
}
// 也可以实现文件移动,将文件移动到其他目录
File targetFile = new File("D:/test/a/demo_renamed.txt");
if (newFile.exists()) {
boolean moveResult = newFile.renameTo(targetFile);
System.out.println("文件移动结果:" + moveResult);
}
}
}
路径管理相关核心方法
File类提供了多个路径相关的实用方法,方便开发者获取和处理文件路径信息:
| 方法名 | 作用说明 |
|---|---|
| getAbsolutePath() | 获取文件的绝对路径字符串 |
| getPath() | 获取创建File实例时传入的路径字符串 |
| getParent() | 获取父目录的路径字符串,如果没有父目录则返回null |
| getName() | 获取文件或目录的名称 |
| isAbsolute() | 判断路径是否为绝对路径,返回布尔值 |
以下是路径方法的示例:
import java.io.File;
public class PathDemo {
public static void main(String[] args) {
File file = new File("test/demo.txt");
System.out.println("传入路径:" + file.getPath());
System.out.println("绝对路径:" + file.getAbsolutePath());
System.out.println("父目录:" + file.getParent());
System.out.println("文件名称:" + file.getName());
System.out.println("是否为绝对路径:" + file.isAbsolute());
}
}
注意事项
- File类的操作依赖于操作系统的文件系统,不同系统的路径分隔符不同,建议使用File.separator代替硬编码的斜杠,提高代码跨平台性
- 删除目录时如果目录非空,需要先递归删除目录下的所有内容,再删除空目录
- 创建文件或目录时需要确保有对应的读写权限,否则会抛出安全异常或操作失败
- 路径字符串中的斜杠可以使用正斜杠/,Java会自动适配不同操作系统的路径格式,不需要特意转义