All Downloads are FREE. Search and download functionalities are using the official Maven repository.

me.wuwenbin.lang.file.Files Maven / Gradle / Ivy

There is a newer version: 2.7.3.RELEASE
Show newest version
package me.wuwenbin.lang.file;

import java.io.*;
import java.math.BigInteger;
import java.security.MessageDigest;


/**
 * @desc:文件工具类
 * @Author:chenssy
 * @date:2014年8月7日
 */
public class Files {
    private static final String FOLDER_SEPARATOR = "/";
    private static final char EXTENSION_SEPARATOR = '.';

    /**
     * @param filePath 指定的文件路径
     * @param isNew    true:新建、false:不新建
     * @return 存在返回TRUE,不存在返回FALSE
     * @desc:判断指定路径是否存在,如果不存在,根据参数决定是否新建
     * @autor:chenssy
     * @date:2014年8月7日
     */
    public boolean isExist(String filePath, boolean isNew) {
        java.io.File file = new java.io.File(filePath);
        if (!file.exists() && isNew) {
            return file.mkdirs(); // 新建文件路径
        }
        return false;
    }


    /**
     * 获取指定文件的大小
     *
     * @param file
     * @return
     * @throws Exception
     * @author:chenssy
     * @date : 2016年4月30日 下午9:10:12
     */
    @SuppressWarnings("resource")
    public long getFileSize(java.io.File file) throws Exception {
        long size = 0;
        if (file.exists()) {
            FileInputStream fis = null;
            fis = new FileInputStream(file);
            size = fis.available();
        } else {
            file.createNewFile();
        }
        return size;
    }

    /**
     * 删除所有文件,包括文件夹
     *
     * @param dirpath
     * @author : chenssy
     * @date : 2016年5月23日 下午12:41:08
     */
    public void deleteAll(String dirpath) {
        java.io.File path = new java.io.File(dirpath);
        try {
            if (!path.exists())
                return;// 目录不存在退出
            if (path.isFile()) // 如果是文件删除
            {
                path.delete();
                return;
            }
            java.io.File[] files = path.listFiles();// 如果目录中有文件递归删除文件
            for (int i = 0; i < files.length; i++) {
                deleteAll(files[i].getAbsolutePath());
            }
            path.delete();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 复制文件或者文件夹
     *
     * @param inputFile   源文件
     * @param outputFile  目的文件
     * @param isOverWrite 是否覆盖文件
     * @throws IOException
     * @author : chenssy
     * @date : 2016年5月23日 下午12:41:59
     */
    public void copy(java.io.File inputFile, java.io.File outputFile, boolean isOverWrite) throws IOException {
        if (!inputFile.exists()) {
            throw new RuntimeException(inputFile.getPath() + "源目录不存在!");
        }
        copyPri(inputFile, outputFile, isOverWrite);
    }

    /**
     * 复制文件或者文件夹
     *
     * @param inputFile   源文件
     * @param outputFile  目的文件
     * @param isOverWrite 是否覆盖文件
     * @throws IOException
     * @author : chenssy
     * @date : 2016年5月23日 下午12:43:24
     */
    private void copyPri(java.io.File inputFile, java.io.File outputFile, boolean isOverWrite) throws IOException {
        if (inputFile.isFile()) { // 文件
            copySimpleFile(inputFile, outputFile, isOverWrite);
        } else {
            if (!outputFile.exists()) { // 文件夹
                outputFile.mkdirs();
            }
            // 循环子文件夹
            for (java.io.File child : inputFile.listFiles()) {
                copy(child, new java.io.File(outputFile.getPath() + "/" + child.getName()), isOverWrite);
            }
        }
    }

    /**
     * 复制单个文件
     *
     * @param inputFile   源文件
     * @param outputFile  目的文件
     * @param isOverWrite 是否覆盖
     * @throws IOException
     * @author : chenssy
     * @date : 2016年5月23日 下午12:44:07
     */
    private void copySimpleFile(java.io.File inputFile, java.io.File outputFile, boolean isOverWrite) throws IOException {
        if (outputFile.exists()) {
            if (isOverWrite) { // 可以覆盖
                if (!outputFile.delete()) {
                    throw new RuntimeException(outputFile.getPath() + "无法覆盖!");
                }
            } else {
                // 不允许覆盖
                return;
            }
        }
        InputStream in = new FileInputStream(inputFile);
        OutputStream out = new FileOutputStream(outputFile);
        byte[] buffer = new byte[1024];
        int read = 0;
        while ((read = in.read(buffer)) != -1) {
            out.write(buffer, 0, read);
        }
        in.close();
        out.close();
    }

    /**
     * 获取文件的MD5
     *
     * @param file 文件
     * @return
     * @author : chenssy
     * @date : 2016年5月23日 下午12:50:38
     */
    public String getFileMD5(java.io.File file) {
        if (!file.exists() || !file.isFile()) {
            return null;
        }
        MessageDigest digest = null;
        FileInputStream in = null;
        byte buffer[] = new byte[1024];
        int len;
        try {
            digest = MessageDigest.getInstance("MD5");
            in = new FileInputStream(file);
            while ((len = in.read(buffer, 0, 1024)) != -1) {
                digest.update(buffer, 0, len);
            }
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        BigInteger bigInt = new BigInteger(1, digest.digest());
        return bigInt.toString(16);
    }

    /**
     * 获取文件的后缀
     *
     * @param file 文件
     * @return
     * @author : chenssy
     * @date : 2016年5月23日 下午12:51:59
     */
    public String getFileSuffix(String file) {
        if (file == null) {
            return null;
        }
        int extIndex = file.lastIndexOf(EXTENSION_SEPARATOR);
        if (extIndex == -1) {
            return null;
        }
        int folderIndex = file.lastIndexOf(FOLDER_SEPARATOR);
        if (folderIndex > extIndex) {
            return null;
        }
        return file.substring(extIndex + 1);
    }

    /**
     * 文件重命名
     *
     * @param oldPath 老文件
     * @param newPath 新文件
     * @author : chenssy
     * @date : 2016年5月23日 下午12:56:05
     */
    public boolean renameDir(String oldPath, String newPath) {
        java.io.File oldFile = new java.io.File(oldPath);// 文件或目录
        java.io.File newFile = new java.io.File(newPath);// 文件或目录

        return oldFile.renameTo(newFile);// 重命名
    }

    /**
     * Author : Wuwenbin
* Title : getBytesByFilepath
* Description : 获得指定文件的byte数组
* * @param filePath * @return */ public byte[] getBytesByFilepath(String filePath) { byte[] buffer = null; try { java.io.File file = new java.io.File(filePath); FileInputStream fis = new FileInputStream(file); ByteArrayOutputStream bos = new ByteArrayOutputStream(1000); byte[] b = new byte[1000]; int n; while ((n = fis.read(b)) != -1) { bos.write(b, 0, n); } fis.close(); bos.close(); buffer = bos.toByteArray(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return buffer; } /** * Author : Wuwenbin
* Title : getFileByByte
* Description : 根据byte数组,生成文件
* * @param bfile * @param filePath * @param fileName */ public void getFileByByte(byte[] bfile, String filePath, String fileName) { BufferedOutputStream bos = null; FileOutputStream fos = null; java.io.File file = null; try { java.io.File dir = new java.io.File(filePath); if (!dir.exists() && dir.isDirectory()) {// 判断文件目录是否存在 dir.mkdirs(); } file = new java.io.File(filePath + java.io.File.separator + fileName); fos = new FileOutputStream(file); bos = new BufferedOutputStream(fos); bos.write(bfile); } catch (Exception e) { e.printStackTrace(); } finally { if (bos != null) { try { bos.close(); } catch (IOException e1) { e1.printStackTrace(); } } if (fos != null) { try { fos.close(); } catch (IOException e1) { e1.printStackTrace(); } } } } /** * Author : Wuwenbin
* Title : inputStream2ByteArray
* Description : 根据流生成byte数组二进制
* * @param input * @return * @throws IOException */ public byte[] inputStream2ByteArray(InputStream input) throws IOException { ByteArrayOutputStream output = new ByteArrayOutputStream(); byte[] buffer = new byte[4096]; int n = 0; while (-1 != (n = input.read(buffer))) { output.write(buffer, 0, n); } return output.toByteArray(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy