管道基础大数据平台系统开发-【后端】-Server
1
13693261870
2022-11-01 b1bdad2ff512e73a2dd9049f2ccbddd4634969f7
src/main/java/com/lf/server/helper/FileHelper.java
@@ -1,6 +1,16 @@
package com.lf.server.helper;
import com.lf.server.entity.data.MetaFileEntity;
import com.lf.server.service.data.UploaderService;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.List;
/**
 * 文件帮助类
@@ -9,11 +19,29 @@
public class FileHelper {
    private final static String POINT = ".";
    public static final double D1024 = 1024.0;
    public static final double D1050 = 1050.0;
    private final static Log log = LogFactory.getLog(FileHelper.class);
    /**
     * 获取文件名
     *
     * @param file
     * @return
     */
    public static String getFileName(String file) {
        int idx = file.lastIndexOf(File.separator);
        if (idx > -1) {
            return file.substring(idx + 1);
        }
        return "";
    }
    /**
     * 获取文件扩展名
     *
     * @param file 文件
     * @return
     */
    public static String getExtension(File file) {
        if (file == null) {
@@ -30,6 +58,21 @@
        return fileName.substring(idx);
    }
    /**
     * 获取文件扩展名
     */
    public static String getExtension(String fileName) {
        if (StringHelper.isEmpty(fileName)) {
            return "";
        }
        int idx = fileName.lastIndexOf(POINT);
        if (idx == -1) {
            return "";
        }
        return fileName.substring(idx).toLowerCase();
    }
    /**
     * 获取多用途互联网邮件扩展类型
@@ -120,4 +163,117 @@
                return "application/octet-stream";
        }
    }
    /**
     * 字节单位换算
     */
    public static String formatByte(long byteNumber) {
        double kbNumber = byteNumber / D1024;
        if (kbNumber < D1024) {
            return new DecimalFormat("#.##KB").format(kbNumber);
        }
        double mbNumber = kbNumber / D1024;
        if (mbNumber < D1024) {
            return new DecimalFormat("#.##MB").format(mbNumber);
        }
        double gbNumber = mbNumber / D1024;
        if (gbNumber < D1024) {
            return new DecimalFormat("#.##GB").format(gbNumber);
        }
        double tbNumber = gbNumber / D1024;
        return new DecimalFormat("#.##TB").format(tbNumber);
    }
    /**
     * byte转MB
     */
    public static double sizeToMb(long size) {
        if (size < D1050) {
            return 0.001;
        }
        String str = String.format("%.3f", size / D1024 / D1024);
        return Double.parseDouble(str);
    }
    /**
     * 获取文件 MD5 码
     */
    public static String getFileMd5(String filePath) throws IOException {
        FileInputStream fileStream = new FileInputStream(filePath);
        String md5 = DigestUtils.md5Hex(fileStream);
        fileStream.close();
        return md5;
    }
    /**
     * 删除文件
     */
    public static void deleteFiles(List<MetaFileEntity> list) {
        try {
            for (MetaFileEntity mf : list) {
                File f = new File(mf.getPath());
                if (f.exists()) {
                    f.delete();
                }
            }
        } catch (Exception ex) {
            log.error(ex.getMessage(), ex);
        }
    }
    /**
     * 删除文件夹
     *
     * @param dir 文件夹
     */
    public static void deleteDir(String dir) {
        File file = new File(dir);
        deleteFiles(file);
    }
    /**
     * 级联删除文件
     *
     * @param file 文件
     */
    public static void deleteFiles(File file) {
        if (file == null || !file.exists()) {
            return;
        }
        if (file.isDirectory()) {
            File[] files = file.listFiles();
            for (File f : files) {
                if (f.isDirectory()) {
                    deleteFiles(f);
                } else {
                    f.delete();
                }
            }
        }
        file.delete();
    }
    /**
     * 获取相对路径
     *
     * @param file 文件
     * @return 相对路径
     */
    public static String getRelativePath(String file) {
        if (StringHelper.isEmpty(file)) {
            return null;
        }
        int idx = file.lastIndexOf(File.separator);
        int start = file.lastIndexOf(File.separator, idx - 1);
        return file.substring(start + 1);
    }
}