Java開發之刪除文件夾和文件的工具類

自己從別的地方看到的操作刪除文件夾和文件的工具類,分享記錄一下

package com.heivr.webapp.authority.util;

import java.io.File;

public class HandleFileUtil {
	// 驗證字符串是否爲正確路徑名的正則表達式
	private static String matches = "[A-Za-z]:\\\\[^:?\"><*]*";
	// 通過 sPath.matches(matches) 方法的返回值判斷是否正確
	// sPath 爲路徑字符串
	private static  boolean flag ;
	private static File file;
	
    /**
     *  根據路徑刪除指定的目錄或文件,無論存在與否
     *@param sPath  要刪除的目錄或文件
     *@return 刪除成功返回 true,否則返回 false。
     */
    public static boolean DeleteFolder(String sPath) {
        flag = false;
        file = new File(sPath);
        // 判斷目錄或文件是否存在
        if (!file.exists()) {  // 不存在返回 false
            return flag;
        } else {
            // 判斷是否爲文件
            if (file.isFile()) {  // 爲文件時調用刪除文件方法
                return deleteFile(sPath);
            } else {  // 爲目錄時調用刪除目錄方法
                return deleteDirectory(sPath);
            }
        }
    }
    
    /**
     * 刪除單個文件
     * @param   sPath    被刪除文件的文件名
     * @return 單個文件刪除成功返回true,否則返回false
     */
    public static boolean deleteFile(String sPath) {
        flag = false;
        file = new File(sPath);
        // 路徑爲文件且不爲空則進行刪除
        if (file.isFile() && file.exists()) {
            file.delete();
            flag = true;
        }
        return flag;
    }
    
    /**
     * 刪除目錄(文件夾)以及目錄下的文件
     * @param   sPath 被刪除目錄的文件路徑
     * @return  目錄刪除成功返回true,否則返回false
     */
    public static boolean deleteDirectory(String sPath) {
        //如果sPath不以文件分隔符結尾,自動添加文件分隔符
        if (!sPath.endsWith(File.separator)) {
            sPath = sPath + File.separator;
        }
        File dirFile = new File(sPath);
        //如果dir對應的文件不存在,或者不是一個目錄,則退出
        if (!dirFile.exists() || !dirFile.isDirectory()) {
            return false;
        }
        flag = true;
        //刪除文件夾下的所有文件(包括子目錄)
        File[] files = dirFile.listFiles();
        for (int i = 0; i < files.length; i++) {
            //刪除子文件
            if (files[i].isFile()) {
                flag = deleteFile(files[i].getAbsolutePath());
                if (!flag) break;
            } //刪除子目錄
            else {
                flag = deleteDirectory(files[i].getAbsolutePath());
                if (!flag) break;
            }
        }
        if (!flag) return false;
        //刪除當前目錄
        if (dirFile.delete()) {
            return true;
        } else {
            return false;
        }
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章