|
@@ -0,0 +1,263 @@
|
|
|
+package com.jiayue.ipfcst.fileupload.util;
|
|
|
+
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.io.FileUtils;
|
|
|
+import org.springframework.util.ResourceUtils;
|
|
|
+
|
|
|
+import java.io.File;
|
|
|
+import java.io.FileNotFoundException;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.UnsupportedEncodingException;
|
|
|
+import java.net.URLDecoder;
|
|
|
+import java.nio.file.Files;
|
|
|
+import java.nio.file.LinkOption;
|
|
|
+import java.nio.file.Path;
|
|
|
+import java.nio.file.Paths;
|
|
|
+import java.nio.file.attribute.BasicFileAttributeView;
|
|
|
+import java.nio.file.attribute.BasicFileAttributes;
|
|
|
+import java.security.MessageDigest;
|
|
|
+import java.util.Date;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 文件工具类
|
|
|
+ *
|
|
|
+ * @author xsl
|
|
|
+ * @version 3.0
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+public class FileUtil {
|
|
|
+ /**
|
|
|
+ * 移动本地文件
|
|
|
+ *
|
|
|
+ * @param remoteAbsoluteFile 远程文件名(包括完整路径)
|
|
|
+ * @param localAbsoluteFile 本地文件名(包括完整路径)
|
|
|
+ * @return 成功时,返回true,失败返回false
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public static void move(String localAbsoluteFile, String remoteAbsoluteFile) throws Exception {
|
|
|
+ File srcFile = new File(localAbsoluteFile);
|
|
|
+ File destDir = new File(remoteAbsoluteFile);
|
|
|
+ try {
|
|
|
+ if (!destDir.exists()) {// 如果目录不存在则创建目录
|
|
|
+ boolean b = destDir.mkdirs();
|
|
|
+ if (!b) // 如果创建失败则抛出异常
|
|
|
+ throw new RuntimeException(destDir + " 目录创建失败");
|
|
|
+ }
|
|
|
+ FileUtils.moveFile(srcFile, new File(remoteAbsoluteFile + File.separator + srcFile.getName()));
|
|
|
+ } catch (IOException e) {
|
|
|
+ throw new Exception("文件:" + srcFile.getName() + "移动到" + destDir.getPath() + "失败。", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //文件内容md5加密
|
|
|
+ public static String getMD5(byte[] fileByte) {
|
|
|
+ String md5 = new String();
|
|
|
+ try {
|
|
|
+ MessageDigest md = MessageDigest.getInstance("MD5");
|
|
|
+ md.update(fileByte);
|
|
|
+ byte b[] = md.digest();
|
|
|
+
|
|
|
+ int i;
|
|
|
+
|
|
|
+ StringBuffer buf = new StringBuffer("");
|
|
|
+ for (int offset = 0; offset < b.length; offset++) {
|
|
|
+ i = b[offset];
|
|
|
+ if (i < 0)
|
|
|
+ i += 256;
|
|
|
+ if (i < 16)
|
|
|
+ buf.append("0");
|
|
|
+ buf.append(Integer.toHexString(i));
|
|
|
+ }
|
|
|
+
|
|
|
+ md5 = buf.toString();
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return md5;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取文件创建时间
|
|
|
+ *
|
|
|
+ * @param fullFileName
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static Long getFileCreateTime(String fullFileName) {
|
|
|
+ Path path = Paths.get(fullFileName);
|
|
|
+ BasicFileAttributeView basicview = Files.getFileAttributeView(path, BasicFileAttributeView.class, LinkOption.NOFOLLOW_LINKS);
|
|
|
+ BasicFileAttributes attr;
|
|
|
+ try {
|
|
|
+ attr = basicview.readAttributes();
|
|
|
+ Date createDate = new Date(attr.creationTime().toMillis());
|
|
|
+ return createDate.getTime();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return new Date().getTime();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取项目根路径
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getResourceBasePath() {
|
|
|
+ // 获取跟目录
|
|
|
+ File path = null;
|
|
|
+ try {
|
|
|
+ path = new File(ResourceUtils.getURL("classpath:").getPath());
|
|
|
+
|
|
|
+ } catch (FileNotFoundException e) {
|
|
|
+ // nothing to do
|
|
|
+ }
|
|
|
+ if (path == null || !path.exists()) {
|
|
|
+ path = new File("");
|
|
|
+ }
|
|
|
+
|
|
|
+ String pathStr = path.getAbsolutePath();
|
|
|
+ try {
|
|
|
+ pathStr = URLDecoder.decode(pathStr, "UTF-8");
|
|
|
+ } catch (UnsupportedEncodingException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ // 如果是在eclipse中运行,则和target同级目录,如果是jar部署到服务器,则默认和jar包同级
|
|
|
+// pathStr = pathStr.replace("\\target\\classes", "");
|
|
|
+
|
|
|
+ return pathStr;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取上报文件目录相对路径
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getFileUploadPath() {
|
|
|
+ return createUploadAllDir("uploadFile");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取下载文件目录相对路径
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getDownloadFilePath() {
|
|
|
+ return createUploadAllDir("downloadFile");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取下载文件目录相对路径
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getZxglFilePath() {
|
|
|
+ return createUploadAllDir("zxgl");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取日志目录相对路径
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getLogsPath() {
|
|
|
+ return createUploadAllDir("logs");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取系统脚本相对路径
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getBinPath() {
|
|
|
+ return createUploadAllDir("bin");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 程序备份相对路径
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getOriginalPath() {
|
|
|
+ return createUploadAllDir("original");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 系统资料相对路径
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getSystemFilePath() {
|
|
|
+ return createUploadAllDir("systemFile");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取被删除文件目录
|
|
|
+ *
|
|
|
+ * @return 路径
|
|
|
+ */
|
|
|
+ public static String getDeleteFilePath() {
|
|
|
+ return createUploadAllDir("deleteFile");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 程序运行相对路径
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getProducePath() {
|
|
|
+ return createUploadAllDir("produce");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 报表相对路径
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getreportFormPath() {
|
|
|
+ return createUploadAllDir("reportForm");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取临时文件目录相对路径
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getTempFilePath() {
|
|
|
+ return createUploadAllDir("tempFile");
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String getE46Path() {
|
|
|
+ return createUploadAllDir("HN");
|
|
|
+ }
|
|
|
+
|
|
|
+ private static String createUploadAllDir(String dir) {
|
|
|
+ String path = "";
|
|
|
+ if (System.getProperties().getProperty("file.separator").equals("\\")) {
|
|
|
+ path = new File(getResourceBasePath()).getParentFile().getParentFile().getParentFile().getAbsolutePath() + File.separator + dir;
|
|
|
+ try {
|
|
|
+ path = URLDecoder.decode(path, "UTF-8");
|
|
|
+ } catch (UnsupportedEncodingException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ File file = new File(path);
|
|
|
+ if (!file.exists()) {
|
|
|
+ boolean b = file.mkdirs();
|
|
|
+ if (!b)
|
|
|
+ log.error("目录创建失败" + path);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ path = "/home/syjy/ipfcstV3/"+ dir;
|
|
|
+ }
|
|
|
+ return path;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取环境数据导出文件目录相对路径
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getEnvironmentalDataFile() {
|
|
|
+ return createUploadAllDir("environmentalDataFile");
|
|
|
+ }
|
|
|
+}
|