天天看点

java 多级文件夹删除

package com.dsp.rpc.metricelf;

import java.io.File;

/**
 * @author bianqh
 * 传入文件路径,删除文件,以及文件夹下的所有文件
 */
public class DeleteDirUtil {
    
    /**
     * 根据路径删除指定目录和文件
     * @param sPath :路径
     * @return :删除成功返回true,否则返回false
     */
    public static boolean deleteFolder(String sPath){
        File file = new File(sPath);
        if(!file.exists()){
            return false;
        }else {
            if(file.isFile()){
                return deleteFile(sPath);
            }else {
                return deleteDirectory(sPath);
            }
        }
    }

    /**
     * 删除单个文件
     * @param sPath:文件路径
     * @return :是否删除成功
     */
    private static boolean deleteFile(String sPath){
        boolean flag = false;
        File file = new File(sPath);
        if(file.isFile() && file.exists()){
            flag = file.delete();
        }
        return flag;
    }

    /**
     * 删除目录以及目录下的文件
     * @param sPath :目录路径
     * @return :是否删除成功
     */
    private static boolean deleteDirectory(String sPath){
        if(!sPath.endsWith(File.separator)){
            sPath = sPath + File.separator;
        }

        File dirFile = new File(sPath);
        if(!dirFile.exists() || !dirFile.isDirectory()){
            return false;
        }
        boolean flag = true;
        File[] files = dirFile.listFiles();
        if(files!=null){
            for (File ff : files) {
                if(ff.isFile()){
                    flag = deleteFile(ff.getAbsolutePath());
                    if(!flag) { break; }
                }else {
                    flag = deleteDirectory(ff.getAbsolutePath());
                    if(!flag) { break; }
                }
            }
        }

        if(!flag) { return false; }
        //删除当前目录
        return dirFile.delete();
    }





}