java 通过递归方式删除文件和目录
本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:
- File.delete()删除文件或文件夹
- 当File执行一个文件夹时,首先保证该文件夹下不存在文件或目录
代码块
代码块语法遵循标准markdown代码,例如:
//定义windows下文件分隔符使用正则表达式匹配格式 例如:"\\"
public static String MATCH = "[A-Za-z]:\\\\[^:?\"><*]*";
//主方法入口,针对所提供的路径只是文件,不是目录,直接删除!
public boolean deleteFolder(String deletePath) throws Exception{
boolean flag = false;
if(!deletePath.matches(MATCH)){
return flag;
}
File file = new File(deletePath);
if(file.isFile()){
flag = file.delete();
}else{
flag = this.deleteDirectory(deletePath);
}
if(flag){
System.out.println("文件已经删除!");
}
return flag;
}
/**
* 通过指定路径删除路径下的所有文件
* @param deletePath
* @return
* @throws Exception
*/
public boolean deleteDirectory(String deletePath) throws Exception{
boolean flag = false;
//1.如果路径名不是以'/'结尾 自动补齐
if(!deletePath.endsWith(File.separator)){
deletePath = deletePath + File.separator;
}
File file = new File(deletePath);
if(!file.exists()){
return flag;
}
File[] files = file.listFiles();
if(files.length == 0){
flag = file.delete();
}else{
for(int i = 0; i < files.length; i++){
if(files[i].isFile()){
flag = files[i].delete();
}else{
flag=this.deleteDirectory(files[i].getPath());
//此处判断主要是删除递归删除后遗留下的空目录
if(files[i].exists()){
flag = files[i].delete();
}
}
}
}
//此处删除最外层的目录
if(file.exists())
flag = file.delete();
return flag;
}
//测试方法
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
DeleteFile delete = new DeleteFile();//这时类名
String deletePath = "D:\\work\\IO - 副本";//删除拷贝的目录
boolean b = delete.deleteFolder(deletePath);
System.out.println("删除状态:" + (b == true ? "已删除" : "未删除"));
}
到此结束!