java中file类可创建删除本地文件目录,但仅抽象路径、不处理内容;mkdir()建单层目录,mkdirs()建多级,createnewfile()建文件需先exists()判断;delete()仅删空目录或文件,非空目录须递归删除;路径用/或,建议绝对路径;jdk7起推荐nio.2的files api。

Java中使用File类可以完成本地文件和目录的创建与删除操作,但要注意它只是对文件系统路径的抽象,并不涉及文件内容读写;且部分操作(如删除非空目录)需手动递归处理。
创建文件或目录
File对象本身不创建任何东西,必须调用具体方法才能生效:
-
mkdir():仅创建单层目录,父目录必须已存在,否则返回false -
mkdirs():可创建多级目录(自动补全所有不存在的父目录),推荐用于不确定路径是否完整的情况 -
createNewFile():创建新文件,若文件已存在则不覆盖,返回false;调用前建议先用exists()判断,避免静默失败
示例:
File file = new File("data/test.txt");if (!file.exists()) {
file.getParentFile().mkdirs(); // 确保父目录存在
file.createNewFile();
}
删除文件或目录
delete()是唯一删除方法,但有重要限制:
- 只能删除空目录,非空目录直接返回
false - 删除文件时,路径必须准确指向文件(不能是目录),且文件未被其他进程占用
- 不抛出异常,仅通过返回值
true/false表示是否成功,务必检查返回值
要删除非空目录,需先递归删除内部所有文件和子目录:
public static boolean deleteDir(File dir) {if (dir.isDirectory()) {
File[] children = dir.listFiles();
if (children != null) {
for (File child : children) {
deleteDir(child); // 递归删除子项
}
}
}
return dir.delete(); // 最后删自己
}
路径与权限注意事项
实际操作受运行环境约束:
- 路径使用正斜杠
/或双反斜杠\(Windows下单反斜杠会报错) - 相对路径以当前工作目录为基准(可通过
System.getProperty("user.dir")查看),建议优先用绝对路径或显式构造 - 无写权限、磁盘满、杀毒软件拦截等情况会导致操作失败,
delete()和createNewFile()均只返回false,不会抛异常
替代方案建议
JDK7起推荐使用java.nio.file包,更安全、功能更强:
-
Files.createFile(path)和Files.createDirectory(path)会明确抛出异常说明失败原因 -
Files.delete(path)删除文件,Files.deleteIfExists(path)安全删除(不存在也不报错) - 删除非空目录可用
Files.walkFileTree()配合SimpleFileVisitor实现可靠递归清理
对于新项目,优先考虑NIO.2 API,File类更适合维护旧代码或简单场景。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











