FileUtils.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package cn.cslg.pas.common.utils;
  2. import cn.cslg.pas.common.model.dto.UploadFileDTO;
  3. import cn.hutool.core.io.FileUtil;
  4. import cn.hutool.core.util.IdUtil;
  5. import org.springframework.boot.system.ApplicationHome;
  6. import org.springframework.stereotype.Service;
  7. import org.springframework.web.multipart.MultipartFile;
  8. import java.io.*;
  9. import java.nio.charset.StandardCharsets;
  10. @Service
  11. public class FileUtils {
  12. public static final String FILE_SEPARATOR = System.getProperty("file.separator");
  13. public static final String COMMON_FILE = "file";
  14. public static final String BACKUP_FILE = "backup";
  15. public static String getStaticPath(String fileName) {
  16. //ApplicationHome类 返回target目录层级
  17. ApplicationHome ah = new ApplicationHome(FileUtils.class);
  18. //获取 applicationHome 内的路径 ...\target\classes 到这一层级下
  19. File file = ah.getSource();
  20. //获取 file的parentFile 即最后一级之前的所有层级路径(包括盘符) 这里能获得到的最终层级为 ...\target 后续用FILE_SEPARATOR(系统路径分割通配符 即 "\") 以及fileName拼接生成存放文件的目录层级 即为根目录 root
  21. String rootPath = file.getParentFile().toString() + FILE_SEPARATOR + fileName;
  22. //根据上方生成的根目录路径 生成对应文件夹 没有就新建
  23. File root = new File(rootPath);
  24. if (!root.exists()) {
  25. root.mkdir();
  26. }
  27. //返回的最终形式为 盘符:\项目层级\target\file
  28. return rootPath;
  29. }
  30. public UploadFileDTO uploadFile(MultipartFile file) {
  31. UploadFileDTO fileDTO = new UploadFileDTO();
  32. //以下操作为 先取得传入文件的完整文件名 (文件名 + 后缀) 然后用FileUtil分别取出 文件名 和 不带 "." 的后缀 然后将这些内容装配进 实体中
  33. //file.getOriginFilename 获取源文件
  34. //FileUtil.getPrefix 返回主文件名
  35. fileDTO.setName(FileUtil.getPrefix(file.getOriginalFilename()));
  36. //FileUtil.extName 获取文件的扩展名(后缀名),扩展名不带 "."
  37. fileDTO.setExtName(FileUtil.extName(file.getOriginalFilename()));
  38. //获取目录名 用时间作为目录名称
  39. String directoryName = this.getDirectoryName();
  40. //用IdUtil生成的UUID 与实体中的 extName(后缀名) 拼接后作为文件名 simpleUUID与randomUUID的区别是 simpleUUID 没有 "-"
  41. String fileName = IdUtil.simpleUUID() + "." + fileDTO.getExtName();
  42. //将完整文件名进行装配
  43. fileDTO.setFileName(fileName);
  44. //生成存储文件的路径
  45. String savePath = this.getSavePath(directoryName);
  46. //根据生成存储文件的路径 生成对应文件夹 没有就新建
  47. File directory = new File(savePath);
  48. if (!directory.exists()) {
  49. directory.mkdir();
  50. }
  51. this.saveFile(file, savePath + fileName);
  52. fileDTO.setPath(FILE_SEPARATOR + directoryName + FILE_SEPARATOR + fileName);
  53. fileDTO.setFileSize(file.getSize());
  54. return fileDTO;
  55. }
  56. public String createDirectory() {
  57. String directoryName = this.getDirectoryName();
  58. String savePath = this.getSavePath(directoryName);
  59. File directory = new File(savePath);
  60. if (!directory.exists()) {
  61. directory.mkdir();
  62. }
  63. return directoryName;
  64. }
  65. public void saveFile(MultipartFile file, String path) {
  66. try {
  67. file.transferTo(new File(path));
  68. } catch (Exception e) {
  69. e.printStackTrace();
  70. }
  71. }
  72. public String getTempPath(String fileName) {
  73. String tempPath = getStaticPath(COMMON_FILE) + FILE_SEPARATOR + "temp";
  74. File file = new File(tempPath);
  75. if (!file.exists()) {
  76. file.mkdir();
  77. }
  78. return tempPath + FILE_SEPARATOR + fileName;
  79. }
  80. public String getSavePath(String directoryName) {
  81. return getStaticPath(COMMON_FILE) + FILE_SEPARATOR + directoryName + FILE_SEPARATOR;
  82. }
  83. public String getDirectory(String fileName) {
  84. return FILE_SEPARATOR + this.createDirectory() + FILE_SEPARATOR + fileName;
  85. }
  86. public String getDirectory2(String directoryName) {
  87. return FILE_SEPARATOR + directoryName + FILE_SEPARATOR;
  88. }
  89. public String getSystemPath(String url) {
  90. return getStaticPath(COMMON_FILE) + FILE_SEPARATOR + url;
  91. }
  92. public String getSystemPath() {
  93. return getStaticPath(COMMON_FILE);
  94. }
  95. public String getDirectoryName() {
  96. return DateUtils.getNowTimeFormat("yyyyMMdd");
  97. }
  98. public String getPath(String url) {
  99. return getStaticPath(COMMON_FILE) + url;
  100. }
  101. public String analysisJsonFile() {
  102. String settingFilePath = "D:\\Data\\uploadSetting.json";
  103. BufferedReader reader = null;
  104. StringBuilder last = new StringBuilder();
  105. InputStreamReader inputStreamReader;
  106. try (FileInputStream fileInputStream = new FileInputStream(settingFilePath)) {
  107. inputStreamReader = new InputStreamReader(fileInputStream, StandardCharsets.UTF_8);
  108. reader = new BufferedReader(inputStreamReader);
  109. String tempString;
  110. while ((tempString = reader.readLine()) != null) {
  111. last.append(tempString);
  112. }
  113. reader.close();
  114. } catch (IOException e) {
  115. e.printStackTrace();
  116. } finally {
  117. if (reader != null) {
  118. try {
  119. reader.close();
  120. } catch (IOException e) {
  121. e.printStackTrace();
  122. }
  123. }
  124. }
  125. return last.toString();
  126. }
  127. }