有两种方式,一种使用递归算法,另外一种直接调用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
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(); //不管是不是文件夹都删除,当递归完,文件夹都会为空,都会被删除
}
只能递归删除了。