ReadFile.java 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package jnpf.base.util;
  2. import jnpf.base.model.read.ReadEnum;
  3. import jnpf.base.model.read.ReadListVO;
  4. import jnpf.base.model.read.ReadModel;
  5. import jnpf.util.FileUtil;
  6. import jnpf.util.RandomUtil;
  7. import lombok.Cleanup;
  8. import lombok.extern.slf4j.Slf4j;
  9. import java.io.*;
  10. import java.util.ArrayList;
  11. import java.util.LinkedHashMap;
  12. import java.util.List;
  13. import java.util.Map;
  14. /**
  15. * @author JNPF开发平台组
  16. * @version V3.1.0
  17. * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com)
  18. * @date 2021/8/20
  19. */
  20. @Slf4j
  21. public class ReadFile {
  22. /**
  23. * 预览代码
  24. *
  25. * @param codePath
  26. * @return
  27. */
  28. public static List<ReadListVO> priviewCode(String codePath) {
  29. File fileAll = new File(jnpf.util.XSSEscape.escapePath(codePath));
  30. List<File> fileList = new ArrayList<>();
  31. if (fileAll.exists()) {
  32. FileUtil.getFile(fileAll, fileList);
  33. }
  34. Map<String, List<ReadModel>> data = new LinkedHashMap<>();
  35. for (int i = fileList.size() - 1; i >= 0; i--) {
  36. File file = fileList.get(i);
  37. String path = file.getAbsolutePath();
  38. ReadEnum readEnum = ReadEnum.getMessage(path);
  39. if (readEnum != null) {
  40. ReadModel readModel = new ReadModel();
  41. String fileContent = readFile(file);
  42. readModel.setFileContent(fileContent);
  43. readModel.setFileName(file.getName());
  44. readModel.setFileType(readEnum.getMessage());
  45. readModel.setId(RandomUtil.uuId());
  46. String folderName = FileUtil.getFileType(file);
  47. readModel.setFolderName(folderName);
  48. List<ReadModel> readModelList = data.get(readEnum.getMessage()) != null ? data.get(readEnum.getMessage()) : new ArrayList<>();
  49. readModelList.add(readModel);
  50. data.put(readEnum.getMessage(), readModelList);
  51. }
  52. }
  53. List<ReadListVO> list = new ArrayList<>();
  54. for (String fileName : data.keySet()) {
  55. ReadListVO listVO = new ReadListVO();
  56. listVO.setFileName(fileName);
  57. listVO.setChildren(data.get(fileName));
  58. listVO.setId(RandomUtil.uuId());
  59. list.add(listVO);
  60. }
  61. return list;
  62. }
  63. /**
  64. * 读取指定目录下的文件
  65. *
  66. * @param path 文件的路径
  67. * @return 文件内容
  68. */
  69. private static String readFile(File path) {
  70. String fileRead = "";
  71. try {
  72. //创建一个输入流对象
  73. @Cleanup InputStream is = new FileInputStream(path);
  74. @Cleanup ByteArrayOutputStream out = new ByteArrayOutputStream();
  75. byte[] buffer = new byte[1024];
  76. int n;
  77. while ((n = is.read(buffer)) != -1) {
  78. out.write(buffer, 0, n);
  79. }
  80. //释放资源
  81. is.close();
  82. fileRead = out.toString();
  83. } catch (IOException e) {
  84. log.error("代码生成器读取文件报错:" + e.getMessage());
  85. }
  86. return fileRead;
  87. }
  88. }