com.ourlife.dev.common.utils.FileUtils.java Source code

Java tutorial

Introduction

Here is the source code for com.ourlife.dev.common.utils.FileUtils.java

Source

/**
 * Copyright &copy; 2012-2013 <a href="https://github.com/ourlife/dev">dev</a> All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 */
package com.ourlife.dev.common.utils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.*;

/**
 * ? ??????????
 *
 * @author ourlife
 * @version 2013-06-21
 */
public class FileUtils extends org.apache.commons.io.FileUtils {

    private static Logger log = LoggerFactory.getLogger(FileUtils.class);

    /**
     * ???
     *
     * @param srcFileName
     *            ???
     * @param descFileName
     *            ??
     * @return ??true?false
     */
    public static boolean copyFile(String srcFileName, String descFileName) {
        return FileUtils.copyFileCover(srcFileName, descFileName, false);
    }

    /**
     * ??
     *
     * @param srcFileName
     *            ???
     * @param descFileName
     *            ??
     * @param coverlay
     *            ?
     * @return ??true?false
     */
    public static boolean copyFileCover(String srcFileName, String descFileName, boolean coverlay) {
        File srcFile = new File(srcFileName);
        // ??
        if (!srcFile.exists()) {
            log.debug("?? " + srcFileName + " ?!");
            return false;
        }
        // ???
        else if (!srcFile.isFile()) {
            log.debug("?" + srcFileName + " ?!");
            return false;
        }
        File descFile = new File(descFileName);
        // ?
        if (descFile.exists()) {
            // ?
            if (coverlay) {
                log.debug("!");
                if (!FileUtils.delFile(descFileName)) {
                    log.debug(" " + descFileName + " !");
                    return false;
                }
            } else {
                log.debug("? " + descFileName + " !");
                return false;
            }
        } else {
            if (!descFile.getParentFile().exists()) {
                // ?
                log.debug("?!");
                // 
                if (!descFile.getParentFile().mkdirs()) {
                    log.debug("!");
                    return false;
                }
            }
        }

        // ?
        // ??
        int readByte = 0;
        InputStream ins = null;
        OutputStream outs = null;
        try {
            // ?
            ins = new FileInputStream(srcFile);
            // ?
            outs = new FileOutputStream(descFile);
            byte[] buf = new byte[1024];
            // ?1024readByte-1??
            while ((readByte = ins.read(buf)) != -1) {
                // ???
                outs.write(buf, 0, readByte);
            }
            log.debug("?? " + srcFileName + " " + descFileName + "?!");
            return true;
        } catch (Exception e) {
            log.debug("?" + e.getMessage());
            return false;
        } finally {
            // ?????
            if (outs != null) {
                try {
                    outs.close();
                } catch (IOException oute) {
                    oute.printStackTrace();
                }
            }
            if (ins != null) {
                try {
                    ins.close();
                } catch (IOException ine) {
                    ine.printStackTrace();
                }
            }
        }
    }

    /**
     * ??
     *
     * @param srcDirName
     *            ???
     * @param descDirName
     *            ??
     * @return ??true?false
     */
    public static boolean copyDirectory(String srcDirName, String descDirName) {
        return FileUtils.copyDirectoryCover(srcDirName, descDirName, false);
    }

    /**
     * ?
     *
     * @param srcDirName
     *            ???
     * @param descDirName
     *            ??
     * @param coverlay
     *            ?
     * @return ??true?false
     */
    public static boolean copyDirectoryCover(String srcDirName, String descDirName, boolean coverlay) {
        File srcDir = new File(srcDirName);
        // ??
        if (!srcDir.exists()) {
            log.debug("?? " + srcDirName + " ?!");
            return false;
        }
        // ??
        else if (!srcDir.isDirectory()) {
            log.debug("?" + srcDirName + " ?!");
            return false;
        }
        // ???
        String descDirNames = descDirName;
        if (!descDirNames.endsWith(File.separator)) {
            descDirNames = descDirNames + File.separator;
        }
        File descDir = new File(descDirNames);
        // 
        if (descDir.exists()) {
            if (coverlay) {
                // ?
                log.debug("!");
                if (!FileUtils.delFile(descDirNames)) {
                    log.debug(" " + descDirNames + " !");
                    return false;
                }
            } else {
                log.debug("? " + descDirNames + " !");
                return false;
            }
        } else {
            // 
            log.debug("?!");
            if (!descDir.mkdirs()) {
                log.debug("!");
                return false;
            }

        }

        boolean flag = true;
        // ??????
        File[] files = srcDir.listFiles();
        for (int i = 0; i < files.length; i++) {
            // ??
            if (files[i].isFile()) {
                flag = FileUtils.copyFile(files[i].getAbsolutePath(), descDirName + files[i].getName());
                // ?
                if (!flag) {
                    break;
                }
            }
            // ??
            if (files[i].isDirectory()) {
                flag = FileUtils.copyDirectory(files[i].getAbsolutePath(), descDirName + files[i].getName());
                // ?
                if (!flag) {
                    break;
                }
            }
        }

        if (!flag) {
            log.debug("? " + srcDirName + "  " + descDirName + " !");
            return false;
        }
        log.debug("? " + srcDirName + "  " + descDirName + " ?!");
        return true;

    }

    /**
     *
     * ??
     *
     * @param fileName
     *            ??
     * @return ?true?false
     */
    public static boolean delFile(String fileName) {
        File file = new File(fileName);
        if (!file.exists()) {
            log.debug(fileName + " ?!");
            return true;
        } else {
            if (file.isFile()) {
                return FileUtils.deleteFile(fileName);
            } else {
                return FileUtils.deleteDirectory(fileName);
            }
        }
    }

    /**
     *
     * ?
     *
     * @param fileName
     *            ??
     * @return ?true?false
     */
    public static boolean deleteFile(String fileName) {
        File file = new File(fileName);
        if (file.exists() && file.isFile()) {
            if (file.delete()) {
                log.debug("? " + fileName + " ?!");
                return true;
            } else {
                log.debug("? " + fileName + " !");
                return false;
            }
        } else {
            log.debug(fileName + " ?!");
            return true;
        }
    }

    /**
     *
     * ?
     *
     * @param dirName
     *            
     * @return ?true?false
     */
    public static boolean deleteDirectory(String dirName) {
        String dirNames = dirName;
        if (!dirNames.endsWith(File.separator)) {
            dirNames = dirNames + File.separator;
        }
        File dirFile = new File(dirNames);
        if (!dirFile.exists() || !dirFile.isDirectory()) {
            log.debug(dirNames + " ?!");
            return true;
        }
        boolean flag = true;
        // ??
        File[] files = dirFile.listFiles();
        for (int i = 0; i < files.length; i++) {
            // ?
            if (files[i].isFile()) {
                flag = FileUtils.deleteFile(files[i].getAbsolutePath());
                // 
                if (!flag) {
                    break;
                }
            }
            // ?
            else if (files[i].isDirectory()) {
                flag = FileUtils.deleteDirectory(files[i].getAbsolutePath());
                // ?
                if (!flag) {
                    break;
                }
            }
        }

        if (!flag) {
            log.debug("!");
            return false;
        }
        // ?
        if (dirFile.delete()) {
            log.debug(" " + dirName + " ?!");
            return true;
        } else {
            log.debug(" " + dirName + " !");
            return false;
        }

    }

    /**
     * ?
     *
     * @param descFileName
     *            ???
     * @return ?true?false
     */
    public static boolean createFile(String descFileName) {
        File file = new File(descFileName);
        if (file.exists()) {
            log.debug(" " + descFileName + " !");
            return false;
        }
        if (descFileName.endsWith(File.separator)) {
            log.debug(descFileName + " ?!");
            return false;
        }
        if (!file.getParentFile().exists()) {
            // ?
            if (!file.getParentFile().mkdirs()) {
                log.debug("!");
                return false;
            }
        }

        // 
        try {
            if (file.createNewFile()) {
                log.debug(descFileName + " ?!");
                return true;
            } else {
                log.debug(descFileName + " !");
                return false;
            }
        } catch (Exception e) {
            e.printStackTrace();
            log.debug(descFileName + " !");
            return false;
        }

    }

    /**
     * 
     *
     * @param descDirName
     *            ??,?
     * @return ?true?false
     */
    public static boolean createDirectory(String descDirName) {
        String descDirNames = descDirName;
        if (!descDirNames.endsWith(File.separator)) {
            descDirNames = descDirNames + File.separator;
        }
        File descDir = new File(descDirNames);
        if (descDir.exists()) {
            log.debug(" " + descDirNames + " !");
            return false;
        }
        // 
        if (descDir.mkdirs()) {
            log.debug(" " + descDirNames + " ?!");
            return true;
        } else {
            log.debug(" " + descDirNames + " !");
            return false;
        }

    }

}