package jnpf.base.util; import jnpf.base.model.read.ReadEnum; import jnpf.base.model.read.ReadListVO; import jnpf.base.model.read.ReadModel; import jnpf.util.FileUtil; import jnpf.util.RandomUtil; import lombok.Cleanup; import lombok.extern.slf4j.Slf4j; import java.io.*; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; /** * @author JNPF开发平台组 * @version V3.1.0 * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com) * @date 2021/8/20 */ @Slf4j public class ReadFile { /** * 预览代码 * * @param codePath * @return */ public static List priviewCode(String codePath) { File fileAll = new File(jnpf.util.XSSEscape.escapePath(codePath)); List fileList = new ArrayList<>(); if (fileAll.exists()) { FileUtil.getFile(fileAll, fileList); } Map> data = new LinkedHashMap<>(); for (int i = fileList.size() - 1; i >= 0; i--) { File file = fileList.get(i); String path = file.getAbsolutePath(); ReadEnum readEnum = ReadEnum.getMessage(path); if (readEnum != null) { ReadModel readModel = new ReadModel(); String fileContent = readFile(file); readModel.setFileContent(fileContent); readModel.setFileName(file.getName()); readModel.setFileType(readEnum.getMessage()); readModel.setId(RandomUtil.uuId()); String folderName = FileUtil.getFileType(file); readModel.setFolderName(folderName); List readModelList = data.get(readEnum.getMessage()) != null ? data.get(readEnum.getMessage()) : new ArrayList<>(); readModelList.add(readModel); data.put(readEnum.getMessage(), readModelList); } } List list = new ArrayList<>(); for (String fileName : data.keySet()) { ReadListVO listVO = new ReadListVO(); listVO.setFileName(fileName); listVO.setChildren(data.get(fileName)); listVO.setId(RandomUtil.uuId()); list.add(listVO); } return list; } /** * 读取指定目录下的文件 * * @param path 文件的路径 * @return 文件内容 */ private static String readFile(File path) { String fileRead = ""; try { //创建一个输入流对象 @Cleanup InputStream is = new FileInputStream(path); @Cleanup ByteArrayOutputStream out = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int n; while ((n = is.read(buffer)) != -1) { out.write(buffer, 0, n); } //释放资源 is.close(); fileRead = out.toString(); } catch (IOException e) { log.error("代码生成器读取文件报错:" + e.getMessage()); } return fileRead; } }