java如何删除非空文件夹
作者:luffy5459
这篇文章主要介绍了java如何删除非空文件夹问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
java删除非空文件夹
java中删除文件和空文件夹很简单,直接调用File api ,file.delete()就可以删除文件或者空文件夹本身。
但是如果是非空文件夹,这个方法就会失败,就像在linux下我们使用命令rm删除非空文件夹一样,它会提示文件夹不为空,我们需要加上-r参数强制递归删除,才能将这个文件夹删除。
java中删除非空文件夹也类似,如果要删除,必须要连带文件夹中的内容一起删除,所以这里也需要递归删除。
思路很简单
因为我们删除的是文件夹,所以这里先列出文件夹中的文件,如果是文件直接删除,如果是文件夹,继续递归调用删除方法,最后还要将空文件夹本身删除。
show me the code:
package com.xxx.oop; import java.io.File; public class Hello { public static void deleteDir(String path){ File file = new File(path); File[] list = file.listFiles(); for(File f:list){ if(f.isDirectory()){ deleteDir(f.getPath()); }else{ f.delete(); } } boolean deleted = file.delete(); System.out.println(deleted); } public static void main(String[] args) { String path = "C:\\Users\\buejee\\Desktop\\test"; deleteDir(path); } }
这个代码本身没有难度,就是一个简单的递归调用,但是却很管用。
这种方式,不管删除空文件夹还是非空文件夹都好使。
递归删除非空文件夹(目录)
Java 对File类 提供了一个删除文件 delete(); 的方法
但是这个方法只对 文件或者 空目录有效,对非空目录是无法进行删除的
这个时候我们要 删除非空目录 可能就会用到 递归的方法:
private static void delDirectory(File f) { //判断是否目录 if (f.isDirectory()) { //是目录,判断是否有子文件 if (f.listFiles().length>0) { for (File file : f.listFiles()) { //有子文件再次调用本方法 delDirectory(file); } }else { //无子文件直接删除 f.delete(); } } //删除空目录 或 文件 f.delete(); }
使用main方法调用:
public static void main(String[] args) { File f = new File("C:\\Users\\jacktu\\Desktop\\test"); delDirectory(f); }
成功删除桌面的 test 文件夹 --这里就不上图了
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。