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 importPath = 1; private static int exportPath = 1; private static int uploadPath = 1; private static int sharePath = 1; private final static double D90 = 90; private final static Log log = LogFactory.getLog(PathHelper.class); public PropertiesConfig getConfig() { return config; } public static int getImportPath() { return importPath; } public static int getExportPath() { return exportPath; } public static int getUploadPath() { return uploadPath; } public static int getSharePath() { return sharePath; } /** * 初始化 */ public void init() { importPath = getSubPath(config.getImportPath(), importPath); exportPath = getSubPath(config.getExportPath(), exportPath); 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 (files.length < SettingData.MAX_FILES) { return subPath; } subPath++; } } /** * 获取导入目录 */ public String getImportFullPath() { importPath = getSubPath(config.getImportPath(), importPath); return config.getImportPath() + File.separator + importPath; } /** * 获取出图目录 */ public String getExportFullPath() { exportPath = getSubPath(config.getExportPath(), exportPath); return config.getExportPath() + File.separator + exportPath; } /** * 获取上传目录 */ 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.YMD_HM_FORMAT.format(new Date()); String tempPath = config.getTempPath(); String path = tempPath + File.separator + tempName; File file = new File(path); if (!file.exists() && !file.isDirectory()) { file.mkdirs(); } double ran = Math.random() * 99; if (ran > D90) { deleteOldPath(tempPath); } return path; } /** * 删除旧路径 */ public void deleteOldPath(String tempPath) { try { File file = new File(tempPath); String str = StringHelper.YMD__FORMAT.format(new Date()); File[] files = file.listFiles(); for (File f : files) { if (f.getPath().indexOf(str) > -1) { continue; } deleteFiles(f); } } catch (Exception ex) { log.error(ex.getMessage() + ex.getStackTrace() + "\n"); } } /** * 级联删除文件 */ public 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(); } }