java删除文件夹的实现方式
目录
- Java删除文件夹
- 先看File.delete()的方法api文档
- 搞定了这个工具方法和单元测试
- 单元测试
- 总结
java删除文件夹
先看File.delete()的方法api文档
Deletes the file or directory denoted by this abstract pathname. If
this pathname denotes编程客栈 a directory, then the directory must be empty inorder to be deleted.
意即,删除文件或者目录,但是如果是目录,则这个目录必须是空的才能被删除。也就是说编程客栈,要删一个非空文件夹,直接调delete方法是无法达到目的的。
看到这个api说明时,我的第一想法是,用 先根遍历序递归删除 文件夹。
搞定了这个工具方法和单元测试
/** * 先根遍历序递归删除文件夹 * * @param dirFile 要被删除的文件或者目录 * @return 删除成功返回true, 否则返回false */ public static boolean deleteFile(File dirFile) { // 如果dir对应的文件不存在,则退出 if (!dirFile.exists()) { return false; } if (dirFile.isFile()) { return dirFile.delete(); } else { javascript for (File file : dirFile.listFiles()) { deleteFile(file); } } return dirFile.delete(); }
单元测试
@Test public void delete() { File file = new File("/temp/lock11-1"); ExcelDiskUtils.deleteFile(file); }
功能是OK的。但是晚上回家想了想。这么基础的工具方法,肯定有第三方工具类提供支持,自己再写一遍是浪费时间。于是我开始查guava和commons-io的工具类。
在commons-io包里找到了一个能达到同样目的的方法org.apache.commons.io.FileUtils#deleteDirectory
/** * Deletes a directory recursively. * * @param directory directory to delete * @throws IOException in case deletion is unsuccessful * @throws IllegalArgumentException if {@code directory} does not exist or is not a directory */ public static void deleteDirectory(final File directory) throws IOException { ... ... }
看方法的api说明
Deletes a directory recursively.
意即,递归的删除一个目录。
自己在写一些常规的工python具方法时,最好先看看commons包或者guava包有没有提供,如果提供了,就用他们的。
不仅节约时间,提高效率,而且这些 顶尖高手写的代码的鲁棒性 都很好。
没必要重复造轮子,遇到定制需求,万不得已再自己写。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www编程客栈.cppcns.com)。
精彩评论