發現電腦好多空文件夾,網上沒有找到刪除空文件夾的程序,自己動手謝了段代碼

import java.io.File; /** * @author zhangyanan */ public class FileUtil { public static void main(String args[]) { String[] disk={"C:/","D:/","E:/","F:/","G:/","H:/"};//具體磁盤數組 for(int i=0;i<disk.length;i++){ deleteEmptyFolder(new File(disk[i]));//循環刪除各個磁盤空文件夾 } } /** * @todo 刪除空文件夾 * @author zhangyanan * @datetime 2018年1月13日上午10:15:59 * @param path */ public static void deleteEmptyFolder(File path) { File[] files = path.listFiles(); if (files==null||files.length == 0) {//空文件夾就刪除. System.out.println(path.getPath()+"\t"+path.getName()); path.delete();//沒有權限的文件夾不會刪除;。安全起見這里不探討刪除沒有權限的空文件夾 // deleteDirectory(path); } else { for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { deleteEmptyFolder(files[i]); } } } } }
20190918:優化了一下

import java.io.File; import java.util.LinkedList; import java.util.List; /** * @author zhangyanan */ public class FileUtil { private static List<String> list=new LinkedList<String>();//沒刪除成功的文件夾,跳過 public static void main(String args[]) { String[] disk={"C:/","D:/","E:/","F:/","G:/","H:/"};//具體磁盤數組 for(int i=0;i<disk.length;i++){ deleteEmptyFolder(new File(disk[i]));//循環刪除各個磁盤空文件夾 } } /** * @todo 刪除空文件夾 * @author zhangyanan * @datetime 2018年1月13日上午10:15:59 * @param path */ public static void deleteEmptyFolder(File path) { if(path==null){ return; } File[] files = path.listFiles(); //受保護的文件夾是null,不是保護的空文件夾length=0 if(files==null){//受保護的文件不處理 return; } if (files.length == 0) {//空文件夾就刪除. String parent = path.getParent(); boolean delete = path.delete();//沒有權限的文件夾不會刪除;。安全起見這里不探討刪除沒有權限的空文件夾 if(!delete){ list.add(path.getPath()); }else{ System.out.println("------------------------------delete path\t"+path.getPath()+"\t"+"\tparentPath\t"+parent); } if(parent!=null){ deleteEmptyFolder(path.getParentFile()); } } else { // System.out.println(files.length+"\t"+path.getPath()); if(files.length>100){//文件夾太多的就不處理了,空文件夾的可能性不大 return; } for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()&&!files[i].isHidden()&&!list.contains(files[i].getPath())) { deleteEmptyFolder(files[i]); } } } } }