java File 通过递归方式删除文件和目录

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 ? "已删除" : "未删除"));
    }

到此结束!

你可能感兴趣的:(java-file,递归,删除文件)