刪除電腦里的空文件夾


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

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]);
                }
            }
        }

    }
}
View Code

 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]);
                }
            }
        }
        

    }
}
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM