定义实体,用于前端文件树展示:
@Data
public class SysFile {
private Integer fileId;
private String name;
private Integer parentId;
private String parentPath;
}
由于项目采用的是SpringBoot框架,打成了war包部署,后端采用以下方式获取文件列表:
/**
* 列表
* @return
*/
@RequestMapping(value = "list", method = RequestMethod.POST)
public Result list() throws FileNotFoundException {
String filePath = ResourceUtils.getURL("classpath:").getPath();
List<SysFile> fileList = new ArrayList<>();
getAllFilePaths(filePath,fileList,0,"");
return Result.ok(fileList);
}
递归获取某目录下的所有子目录以及子文件:
/**
* 递归获取某目录下的所有子目录以及子文件
* @param filePath
* @param filePathList
* @return
*/
private static List<SysFile> getAllFilePaths(String filePath, List<SysFile> filePathList,
Integer level,String parentPath) {
File[] files = new File(filePath).listFiles();
if (files == null) {
return filePathList;
}
for (File file : files) {
int num = filePathList.size()+1;
SysFile sysFile = new SysFile();
sysFile.setName(file.getName());
sysFile.setFileId(num);
sysFile.setParentId(level);
if (file.isDirectory()) {
if(level==0){
if(file.getName().equals("templates")||
file.getName().equals("static")){
filePathList.add(sysFile);
parentPath = SystemConstant.SF_FILE_SEPARATOR+file.getName();
getAllFilePaths(file.getAbsolutePath(), filePathList,num,parentPath);
num++;
}
}else{
filePathList.add(sysFile);
String subParentPath = parentPath+SystemConstant.SF_FILE_SEPARATOR+file.getName();
getAllFilePaths(file.getAbsolutePath(), filePathList,num,subParentPath);
num++;
}
} else {
if(level!=0){
sysFile.setParentPath(parentPath+SystemConstant.SF_FILE_SEPARATOR+file.getName());
filePathList.add(sysFile);
num++;
}
}
}
return filePathList;
}
获取文件内容:
/**
* 获取内容
* @return
*/
@RequestMapping(value = "getContent", method = RequestMethod.POST)
public Result getContent(String filePath) throws FileNotFoundException {
String path = ResourceUtils.getURL("classpath:").getPath();
String content = FileUtil.readUtf8String(path+filePath);
return Result.ok(content);
}
修改保存:
/**
* 保存内容
* @return
*/
@RequestMapping(value = "save", method = RequestMethod.POST)
# 最后
本人也收藏了一份Java面试核心知识点来应付面试,借着这次机会可以送给我的读者朋友们
**目录:**
![全靠这套面试题,才让我有惊无险美团二面拿offer (面经解析)](https://img-blog.csdnimg.cn/img_convert/5a28b5d7be77919231e9e51b4429262a.webp?x-oss-process=image/format,png)
Java面试核心知识点
**一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!**
![全靠这套面试题,才让我有惊无险美团二面拿offer (面经解析)](https://img-blog.csdnimg.cn/img_convert/87feb8049bb3f45f9e5b5bb6cb59a74e.webp?x-oss-process=image/format,png)
Java面试核心知识点
**已经有读者朋友靠着这一份Java面试知识点指导拿到不错的offer了**
![全靠这套面试题,才让我有惊无险美团二面拿offer (面经解析)](https://img-blog.csdnimg.cn/img_convert/fa458b0492b766020357bd5bcdc666a6.webp?x-oss-process=image/format,png)
.(img-Up6vRgrx-1714636475373)]
Java面试核心知识点
**已经有读者朋友靠着这一份Java面试知识点指导拿到不错的offer了**
[外链图片转存中...(img-SsAOsxBN-1714636475374)]
> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**