package com.service;


import java.io.File;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

import com.utils.ConstConfig;

public class FileUtil {
    private transient final static Logger log = LogManager.getLogger(FileUtil.class);

    /**
     * 删除文件夹 param folderPath 文件夹完整绝对路径
     */
    public static void delFolder(String folderPath) {
        try {
            delAllFile(folderPath, true); // 删除完里面所有内容
            String filePath = folderPath;
            filePath = filePath.toString();
            java.io.File myFilePath = new java.io.File(filePath);
            myFilePath.delete(); // 删除空文件夹
        }
        catch (Exception e) {
            log.error("删除文件夹出错!" + e.getMessage());
        }
    }

    /**
     * 删除指定文件夹下所有文件 param path 文件夹完整绝对路径 param folderFlag 是否删除里面的文件夹
     */
    public static boolean delAllFile(String path, boolean folderFlag) {
        boolean flag = false;
        File file = new File(path);
        if (!file.exists()) {
            return flag;
        }
        if (!file.isDirectory()) {
            return flag;
        }
        String[] tempList = file.list();
        File temp = null;
        for (int i = 0; i < tempList.length; i++) {
            if (path.endsWith(File.separator)) {
                temp = new File(path + tempList[i]);
            }
            else {
                temp = new File(path + File.separator + tempList[i]);
            }
            if (temp.isFile()) {
                temp.delete();
            }
            if (folderFlag && temp.isDirectory()) {
                delAllFile(path + "/" + tempList[i], true);// 先删除文件夹里面的文件
                delFolder(path + "/" + tempList[i]);// 再删除空文件夹
                flag = true;
            }
        }
        flag = true;

        return flag;
    }

    /**
     * 删除指定文件夹下所有文件 param path 文件夹完整绝对路径 param folderFlag 是否删除里面的文件夹
     */
    public static boolean delAllFileByFolderName(String path, String folderName, boolean folderFlag) {
        boolean flag = false;
        File file = new File(path);
        if (!file.exists()) {
            return flag;
        }
        if (!file.isDirectory()) {
            return flag;
        }
        String[] tempList = file.list();
        File temp = null;
        for (int i = 0; i < tempList.length; i++) {
            if (path.endsWith(File.separator)) {
                temp = new File(path + tempList[i]);
            }
            else {
                temp = new File(path + File.separator + tempList[i]);
            }
            if (folderFlag && temp.isDirectory() && temp.getName().endsWith(folderName)) {
                delAllFile(path + "/" + tempList[i], true);// 先删除文件夹里面的文件
                delFolder(path + "/" + tempList[i]);// 再删除空文件夹
                flag = true;
            }
            else {
                delAllFileByFolderName(temp.getPath(), folderName, folderFlag);
            }
        }
        flag = true;

        return flag;
    }

    public static void main(String[] args) {
    	String event = "delete folder path:"+ConstConfig.DELETE_PATH+"目录下的所有名称为"+ConstConfig.FOLDER_NAME+"文件夹";
        try {
			delAllFileByFolderName(ConstConfig.DELETE_PATH, ConstConfig.FOLDER_NAME, true);
		} catch (Exception e) {
			log.error(event+" 失败!");
		}
        log.info(event+" 成功!");
    }

    /**
     * 删除指定时间前的文件
     * <p>
     * Title: delFile
     * </p>
     * <p>
     * Description:
     * </p>
     * 
     * @param path
     * @param time
     * @return
     */
    public static boolean delFile(String path, Long time) {
        boolean flag = false;
        File file = new File(path);
        if (!file.exists()) {
            file.mkdirs();
            return flag;
        }
        if (!file.isDirectory()) {
            return flag;
        }
        String[] tempList = file.list();
        File temp = null;
        for (int i = 0; i < tempList.length; i++) {

            if (path.endsWith(File.separator)) {
                temp = new File(path + tempList[i]);
            }
            else {
                temp = new File(path + File.separator + tempList[i]);
            }
            if (temp.isFile()) {
                if (time != null && temp.lastModified() < time) {
                    temp.delete();
                }
            }
        }
        flag = true;

        return flag;
    }

    /**
     * 在指定路径下寻找文件
     * 
     * @param path
     * @param fileName
     * @return 文件路径
     */
    public static String findFile(String path, String fileName) {
        File[] files = new File(path).listFiles();
        for (int i = 0; i < files.length; i++) {
            if (files[i].getName().equals(fileName)) {
                // System.out.println(files[i].getAbsolutePath());
                return files[i].getAbsolutePath();
            }
            else {
                if (files[i].isDirectory()) {
                    String destFileName = findFile(files[i].getAbsolutePath(), fileName);
                    if (destFileName != null) {
                        return destFileName;
                    }
                }
            }
        }
        return null;
    }

    public static String standardFilePath(String filePath) {
        if (filePath == null || filePath.trim().equals(""))
            return filePath;
        filePath = filePath.trim();
        if (File.separator.equals("\\")) {
            filePath = replaceAll(filePath, "/", "\\");
            filePath = replaceAll(filePath, "\\\\", "\\");
        }
        else if (File.separator.equals("/")) {
            filePath = replaceAll(filePath, "\\", "/");
            filePath = replaceAll(filePath, "//", "/");
        }
        return filePath;
    }

    public static String replaceAll(String str, String src, String dest) {
        if (str == null || src == null || dest == null || str.equals("") || src.equals(""))
            return str;
        int lensrc = src.length();
        for (int idx = str.indexOf(src); idx >= 0; idx = str.indexOf(src))
            str = (new StringBuilder()).append(str.substring(0, idx)).append(dest).append(str.substring(idx + lensrc))
                    .toString();

        return str;
    }
}
最近下载更多
moseslau  LV1 2017年9月22日
bjwsnl  LV22 2017年3月29日
zw5097  LV23 2016年2月15日
cdjtwzh  LV1 2016年1月24日
George  LV26 2014年3月1日
爱多疯  LV3 2014年2月16日
xfdxcy  LV2 2014年2月13日
白名单  LV5 2014年2月13日
最代码官方  LV168 2014年2月12日
最近浏览更多
le10000  LV2 2022年7月4日
王文丽 2022年3月5日
暂无贡献等级
myou525 2021年3月29日
暂无贡献等级
未知错误  LV5 2020年8月11日
fengshaoye  LV10 2020年5月20日
zym190605  LV1 2020年5月6日
freedom2017  LV14 2020年3月30日
2317696509  LV6 2019年10月31日
你好1314  LV1 2019年9月25日
Qweqweq  LV2 2019年9月23日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友