123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304 |
- package com.jiayue.biz.util;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.io.FileUtils;
- import org.springframework.util.ResourceUtils;
- import javax.servlet.ServletOutputStream;
- import javax.servlet.http.HttpServletResponse;
- import java.io.*;
- import java.net.URLDecoder;
- import java.net.URLEncoder;
- import java.nio.charset.StandardCharsets;
- 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 + " 目录创建失败");
- }
- File file = new File(remoteAbsoluteFile + File.separator + srcFile.getName());
- if(file.exists()){
- file.delete();
- }
- 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;
- }
- //下载文件
- public static void downloadFile(File file, HttpServletResponse response) {
- String name = file.getName();
- FileInputStream fileInputStream = null;
- ServletOutputStream outputStream = null;
- try {
- fileInputStream = new FileInputStream(file);
- String encode = URLEncoder.encode(name, StandardCharsets.UTF_8.toString());
- response.setContentType("application/octet-stream");
- String percentEncodedFileName = encode.replaceAll("\\+", "%20");
- String contentDispositionValue =
- "attachment; filename=" + percentEncodedFileName;
- response.setHeader("Content-disposition", contentDispositionValue);
- int len = 0;
- byte[] buffer = new byte[1024];
- outputStream = response.getOutputStream();
- while ((len = fileInputStream.read(buffer)) > 0) {
- outputStream.write(buffer, 0, len);
- }
- fileInputStream.close();
- outputStream.flush();
- outputStream.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * 获取上报文件目录相对路径
- *
- * @return
- */
- public static String getFileUploadPath() {
- return createUploadAllDir("uploadFile");
- }
- /**
- * 获取上传测风塔附件相对路径
- *
- * @return
- */
- public static String getEnclosurePath() {
- return createUploadAllDir("enclosure");
- }
- /**
- * 获取下载文件目录相对路径
- *
- * @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 = "D:\\program\\" + dir;
- }*/
- path = "D:\\program\\" + dir;
- return path;
- }
- /**
- * 获取环境数据导出文件目录相对路径
- *
- * @return
- */
- public static String getEnvironmentalDataFile() {
- return createUploadAllDir("environmentalDataFile");
- }
- }
|