package org.jeecg.modules.mdc.util; import cn.hutool.core.date.DateUtil; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.math.BigDecimal; import java.util.Date; /** * Created by YangBin on 2017/9/15. */ public class FileUtils { private static final long MAX_FILE_SIZE = 10*1024*1024; /** * 获取服务器临时路径 * * @param request * @return */ public static String serverTempPath(HttpServletRequest request) { String fsep = System.getProperty("file.separator"); String path = request.getSession().getServletContext().getRealPath(""); if (path.lastIndexOf(fsep) == path.length() - 1) { path += "upload" + fsep +"voucher"+ fsep ; } else { path += fsep + "upload" + fsep +"voucher"+ fsep ; } return path; } public static String serverTempPathIntactReg(HttpServletRequest request) { String fsep = System.getProperty("file.separator"); String path = request.getSession().getServletContext().getRealPath(""); if (path.lastIndexOf(fsep) == path.length() - 1) { path += "upload" + fsep +"log"+ fsep +"error"+ fsep ; } else { path += fsep + "upload" + fsep +"log"+ fsep +"error"+ fsep; } return path; } public static String serverTempPathProcess(HttpServletRequest request) { String fsep = System.getProperty("file.separator"); String path = request.getSession().getServletContext().getRealPath(""); if (path.lastIndexOf(fsep) == path.length() - 1) { path += "upload" + fsep +"process"+ fsep ; } else { path += fsep + "upload" + fsep +"process"+ fsep ; } return path; } public static String changeFileFormatKb(String flow) { BigDecimal flows = new BigDecimal(flow); if (flows.compareTo(new BigDecimal(0)) > 0 && flows.compareTo(new BigDecimal(1024)) < 0) {//小于1M return flows.toString() + "B"; } else if(flows.compareTo(new BigDecimal(1024)) >= 0){ BigDecimal result = flows.divide(new BigDecimal(1024),2,BigDecimal.ROUND_HALF_UP); return result.toString() + "KB"; } else { return "0"; } } /** * 得到项目根目录下的绝对路径(磁盘的物理路径) * @param request * @param newPath * @return */ public static String getFilePath(HttpServletRequest request, String newPath) { String fsep = System.getProperty("file.separator"); String path = request.getSession().getServletContext().getRealPath("/upload"); path += fsep + newPath; return path; } /** * 得到项目根目录下的相对路径 (相对于项目为根路径) * @param newPath * @return */ public static String getRelativePath(String newPath) { return "/upload/" + newPath; } /** * 方法一:使用 FileWriter 写文件 * @param filepath 文件目录 * @param content 待写入内容 * @throws IOException */ public static void fileWriterSql(String filepath, String content) throws IOException { OutputStreamWriter outputStreamWriter = null; try { File file = new File(filepath); if (!file.exists()){ file.createNewFile(); } FileOutputStream outputStream = new FileOutputStream(file); if (outputStream != null){ outputStreamWriter = new OutputStreamWriter(outputStream, "utf-8"); outputStreamWriter.write(content); outputStreamWriter.flush(); } } catch (IOException e) { e.getMessage(); } finally { try { if (outputStreamWriter != null){ outputStreamWriter.close(); } } catch (IOException e) { e.printStackTrace(); } } /* File file=new File(filepath); Writer writer = new OutputStreamWriter(new FileOutputStream(file.getAbsoluteFile()), "UTF-8"); writer.append(content); */ } /** * 文件大小智能转换 * 会将文件大小转换为最大满足单位 * @param size(文件大小,单位为B) * @return 文件大小 */ public static String formatFileSize(Long size) { String sizeName = null; if(1024*1024 > size && size >= 1024 ) { sizeName = String.format("%.2f",size.doubleValue()/1024) + "KB"; }else if(1024*1024*1024 > size && size >= 1024*1024 ) { sizeName = String.format("%.2f",size.doubleValue()/(1024*1024)) + "MB"; }else if(size >= 1024*1024*1024 ) { sizeName = String.format("%.2f",size.doubleValue()/(1024*1024*1024)) + "GB"; }else { sizeName = size.toString() + "B"; } return sizeName; } /** * 上传文件工具类 * @param userPic * @param path * @param fileName * @return */ public static boolean uploadFile(MultipartFile userPic, String path, String fileName) { Long fileSize = userPic.getSize(); if(fileSize > MAX_FILE_SIZE) { return false; } File targetFile = new File(path, fileName); if(!targetFile.exists()){ targetFile.mkdirs(); } try { userPic.transferTo(targetFile); return true; } catch (Exception e) { return false; } } // /** // * 重命名文件名 加入时间戳 // * @param fileName // * @return // */ // public static String newFileName(String fileName) { // String suffix = fileName.substring(fileName.lastIndexOf('.')); // String dateStr = "_"+ DateUtil.format(new Date(), DateUtil.STR_DATE_TIME_FULL); // String nameFile = fileName.substring(0, fileName.indexOf(".")); // //新文件名 // return nameFile + dateStr + suffix; // } }