天天看點

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();
    }





}