管道基础大数据平台系统开发-【后端】-Server
1
sws
2022-11-26 ab849f796bdc17236a95ea5fe5c166fb8f24a75c
src/main/java/com/lf/server/helper/PathHelper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,180 @@
package com.lf.server.helper;
import com.lf.server.config.PropertiesConfig;
import com.lf.server.entity.all.SettingData;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.File;
import java.util.Date;
/**
 * è·¯å¾„帮助类
 * @author WWW
 */
@Component
public class PathHelper {
    @Autowired
    private PropertiesConfig config;
    private static int downloadPath = 1;
    private static int uploadPath = 1;
    private static int sharePath = 1;
    private final static double D85 = 85;
    private final static Log log = LogFactory.getLog(PathHelper.class);
    public PropertiesConfig getConfig() {
        return config;
    }
    public static int getDownloadPath() {
        return downloadPath;
    }
    public static int getUploadPath() {
        return uploadPath;
    }
    public static int getSharePath() {
        return sharePath;
    }
    /**
     * åˆå§‹åŒ–
     */
    public void init() {
        downloadPath = getSubPath(config.getDownloadPath(), downloadPath);
        uploadPath = getSubPath(config.getUploadPath(), uploadPath);
        sharePath = getSubPath(config.getSharePath(), sharePath);
    }
    private static int getSubPath(String parentPath, int subPath) {
        while (true) {
            String path = parentPath + File.separator + subPath;
            File file = new File(path);
            if (!file.exists() && !file.isDirectory()) {
                file.mkdirs();
                return subPath;
            }
            File[] files = file.listFiles();
            if (null == files || files.length < SettingData.MAX_FILES) {
                return subPath;
            }
            subPath++;
        }
    }
    /**
     * èŽ·å–ä¸‹è½½å®Œæ•´ç›®å½•
     */
    public String getDownloadFullPath() {
        downloadPath = getSubPath(config.getDownloadPath(), downloadPath);
        return config.getDownloadPath() + File.separator + downloadPath;
    }
    /**
     * èŽ·å–ä¸Šä¼ å®Œæ•´ç›®å½•
     */
    public String getUploadFullPath() {
        uploadPath = getSubPath(config.getUploadPath(), uploadPath);
        return config.getUploadPath() + File.separator + uploadPath;
    }
    /**
     * èŽ·å–å…±äº«å®Œæ•´ç›®å½•
     */
    public String getShareFullPath() {
        sharePath = getSubPath(config.getSharePath(), sharePath);
        return config.getSharePath() + File.separator + sharePath;
    }
    /**
     * èŽ·å–ä¸´æ—¶è·¯å¾„
     */
    public String getTempPath() {
        String tempName = StringHelper.YMDHMS2_FORMAT.format(new Date());
        String path = config.getTempPath() + File.separator + tempName;
        File file = new File(path);
        if (!file.exists() && !file.isDirectory()) {
            file.mkdirs();
        }
        deleteOldPath(config.getTempPath());
        return path;
    }
    /**
     * èŽ·å–ä¸´æ—¶è·¯å¾„
     */
    public String getTempPath(String subPath) {
        if (!StringHelper.isEmpty(subPath)) {
            String path = config.getTempPath() + File.separator + subPath;
            File file = new File(path);
            if (file.exists() && file.isDirectory()) {
                return path;
            }
        }
        deleteOldPath(config.getTempPath());
        return getTempPath();
    }
    /**
     * èŽ·å–ä¸´æ—¶è·¯å¾„åç§°
     */
    public String getTempPathName() {
        String tempName = StringHelper.YMDHMS2_FORMAT.format(new Date());
        String path = config.getTempPath() + File.separator + tempName;
        File file = new File(path);
        if (!file.exists() && !file.isDirectory()) {
            file.mkdirs();
        }
        deleteOldPath(config.getTempPath());
        return tempName;
    }
    /**
     * åˆ é™¤æ—§è·¯å¾„
     */
    public void deleteOldPath(String tempPath) {
        try {
            double ran = Math.random() * 99;
            if (ran < D85) {
                return;
            }
            File file = new File(tempPath);
            String str = StringHelper.YMD2_FORMAT.format(new Date());
            File[] files = file.listFiles();
            for (File f : files) {
                if (f.getPath().contains(str)) {
                    continue;
                }
                FileHelper.deleteFiles(f);
            }
        } catch (Exception ex) {
            log.error(ex.getMessage(), ex);
        }
    }
}