* 删除有文件的目录
*
* @author:Sena
* @date: 2017-10-30下午3:22:14
*/
public static boolean deleteDir(File dir) {
if (dir.isDirectory()) {
String[] children = dir.list()
// 递归删除目录中的子目录下
for (int i = 0 i < children.length i++) {
boolean success = deleteDir(new File(dir, children[i]))
if (!success) {
return false
}
}
}
// 目录此时为空,可以删除
return dir.delete()
}
有两种方式,一种使用递归算法,另外一种直接调用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