CaeFileUtils.java 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. package com.miniframe.tools;
  2. import com.miniframe.constant.MFConstant;
  3. import com.miniframe.core.exception.BusinessException;
  4. import com.miniframe.core.ext.UtilTools;
  5. import com.miniframe.model.system.SysFile;
  6. import com.miniframe.model.system.dao.SysFileMapper;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. import java.io.BufferedReader;
  10. import java.io.File;
  11. import java.io.FileReader;
  12. import java.io.IOException;
  13. import java.nio.file.Path;
  14. import java.nio.file.Paths;
  15. import java.util.ArrayList;
  16. import java.util.List;
  17. /**
  18. * 大文件上传
  19. */
  20. public class CaeFileUtils {
  21. private static Logger logger = LoggerFactory.getLogger(CaeFileUtils.class);
  22. public static void main(String[] args) throws IOException {
  23. String t = XIDateTimeUtils.DATE_PATTERN_ZONE.format(XIDateTimeUtils.getNowZoned());
  24. logger.info(t);
  25. }
  26. public static void deleFile(String fileId){
  27. SysFileMapper sysFileDAO = UtilTools.getBean(SysFileMapper.class);
  28. SysFile pFile = sysFileDAO.selectByPrimaryKey(fileId);
  29. if(pFile!=null){
  30. File file =new File(XIFileUtils.getRootPathStr()+ MFConstant.separator+pFile.getFilepath());
  31. file.delete();
  32. sysFileDAO.deleteByPrimaryKey(pFile.getId());
  33. }
  34. }
  35. /**
  36. * 创建 存储文件
  37. */
  38. public static String createBigFilePath(String fileName) throws IOException {
  39. String bigFileName =UtilTools.getUUid()+"-"+fileName;
  40. String newDir = XIDateTimeUtils.DATE_PATTERN_ZONE.format(XIDateTimeUtils.getNowZoned());
  41. String dirPath = XIFileUtils.getRootPathStr()+ MFConstant.separator+newDir;
  42. File file = new File(dirPath);
  43. if(!file.exists()){
  44. file.mkdirs();
  45. }
  46. String bigFilePath=dirPath+MFConstant.separator+bigFileName;
  47. File bigFile = new File(bigFilePath);
  48. if(!bigFile.exists()){
  49. bigFile.createNewFile();
  50. }
  51. return bigFilePath;
  52. }
  53. public static void saveBigFiles(String bigFileId,String pathStr,String userid,
  54. String fileMedia,String fileInfo,int chunks) throws IOException, BusinessException {
  55. SysFileMapper sysFileDAO = UtilTools.getBean(SysFileMapper.class);
  56. SysFile sysFileyz = sysFileDAO.selectByPrimaryKey(bigFileId);
  57. if(sysFileyz!=null){
  58. throw new BusinessException("EB4000001");
  59. }
  60. Path path = Paths.get(pathStr);
  61. String fielRelativePath = XIFileUtils.getRelativizePathStr(path);
  62. SysFile sysFile = new SysFile();
  63. sysFile.setId(bigFileId);
  64. //去掉uid部分
  65. int pathIndex = path.getFileName().toString().indexOf("-");
  66. if (pathIndex >= 0 && pathIndex < path.getFileName().toString().length() - 1) {
  67. sysFile.setFilename(path.getFileName().toString().substring(pathIndex + 1));
  68. } else {
  69. sysFile.setFilename(path.getFileName().toString());
  70. }
  71. sysFile.setLasttime(XIDateTimeUtils.getNowDate());
  72. sysFile.setUid(userid);
  73. sysFile.setFilemedia(fileMedia);
  74. sysFile.setRemarks(fileInfo);
  75. sysFile.setFiletype(XIFileUtils.getFileType(path.getFileName().toString()));
  76. sysFile.setFilepath(fielRelativePath);
  77. sysFile.setChunk(-1);
  78. sysFile.setChunks(chunks);
  79. sysFile.setNeedop("-1");//未合并
  80. sysFileDAO.insertSelective(sysFile);
  81. }
  82. public static void saveFile(String bigFileId, String pathStr, String userid,
  83. String fileMedia, String fileInfo) throws IOException, BusinessException {
  84. SysFileMapper sysFileDAO = UtilTools.getBean(SysFileMapper.class);
  85. SysFile sysFileyz = sysFileDAO.selectByPrimaryKey(bigFileId);
  86. if(sysFileyz!=null){
  87. throw new BusinessException("EB4000001");
  88. }
  89. Path path = Paths.get(pathStr);
  90. String fielRelativePath = XIFileUtils.getRelativizePathStr(path);
  91. SysFile sysFile = new SysFile();
  92. sysFile.setId(bigFileId);
  93. //去掉uid部分
  94. int pathIndex = path.getFileName().toString().indexOf("-");
  95. if (pathIndex >= 0 && pathIndex < path.getFileName().toString().length() - 1) {
  96. sysFile.setFilename(path.getFileName().toString().substring(pathIndex + 1));
  97. } else {
  98. sysFile.setFilename(path.getFileName().toString());
  99. }
  100. sysFile.setLasttime(XIDateTimeUtils.getNowDate());
  101. sysFile.setUid(userid);
  102. sysFile.setFilemedia(fileMedia);
  103. sysFile.setRemarks(fileInfo);
  104. sysFile.setFiletype(XIFileUtils.getFileType(path.getFileName().toString()));
  105. sysFile.setFilepath(fielRelativePath);
  106. sysFile.setChunk(1);
  107. sysFile.setChunks(1);
  108. sysFile.setNeedop("1");//合并
  109. sysFileDAO.insertSelective(sysFile);
  110. }
  111. /**
  112. * 以行为单位读取文件,常用于读面向行的格式化文件
  113. */
  114. public static ArrayList<String> readFileByLines(String fileName) {
  115. File file = new File(fileName);
  116. ArrayList<String> fileStr = new ArrayList<String>();
  117. BufferedReader reader = null;
  118. try {
  119. reader = new BufferedReader(new FileReader(file));
  120. String tempString = null;
  121. while ((tempString = reader.readLine()) != null) {
  122. fileStr.add(tempString);
  123. }
  124. reader.close();
  125. } catch (IOException e) {
  126. e.printStackTrace();
  127. } finally {
  128. if (reader != null) {
  129. try {
  130. reader.close();
  131. } catch (IOException e1) {
  132. }
  133. }
  134. }
  135. return fileStr;
  136. }
  137. /**
  138. * 替换双空格
  139. * @param line
  140. * @return
  141. */
  142. public static String stringLessDouble(String line){
  143. line =line.trim();
  144. while (line.indexOf(" ")>0){
  145. line = line.replace(" "," ");
  146. }
  147. return line;
  148. }
  149. }