如何用JAVA删除一个非空的目录

2024-11-24 00:21:09
推荐回答(3个)
回答1:

有两种方式,一种使用递归算法,另外一种直接调用windows的命令:

import java.io.File;  
  
public class FileDemo {  
    /** 
     * 通过调用系统命令删除一个文件夹及下面的所有文件 
     * @param file 
     */  
    public static void deleteFileByWinCom(File file){  
        Runtime rt = Runtime.getRuntime();  
        String cmd = null;  
        try{  
            if(file.isFile()){  
                cmd = "cmd.exe /c del /q/a/f/s "+file.getAbsolutePath();  
            }else{  
                cmd = "cmd.exe /c rd /s/q "+file.getAbsolutePath();  
            }  
            rt.exec(cmd);  
            System.out.println("成功执行了命令...");  
        }catch(Exception e){  
            System.out.println("调用系统命令失败了...");  
        }  
    }  
      
    /** 
     * 通过递归调用删除一个文件夹及下面的所有文件 
     * @param file 
     */  
    public static void deleteFile(File file){  
        if(file.isFile()){//表示该文件不是文件夹  
            file.delete();  
        }else{  
            //首先得到当前的路径  
            String[] childFilePaths = file.list();  
            for(String childFilePath : childFilePaths){  
                File childFile=new File(file.getAbsolutePath()+"\\"+childFilePath);  
                deleteFile(childFile);  
            }  
            file.delete();  
        }  
    }  
      
    public static void main(String[] args){  
        File file=new File("D:\\demo");  
        //deleteFileByWinCom(file);  
        deleteFile(file);  
    }  
}

 具体参考资料:http://blog.csdn.net/smach1991710/article/details/9175757

回答2:

public static void main(String[] args) {
File file = new File("写要删除文件夹的绝对路径");
listFile(file);
}

private static void listFile(File file) {
if (file.isDirectory()) { //如果是文件夹
File[] files = file.listFiles();
for (File file2 : files) {
listFile(file2);
}
}
file.delete(); //不管是不是文件夹都删除,当递归完,文件夹都会为空,都会被删除
}

回答3:

只能递归删除了。