100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > java读取文件目录返回树形结构

java读取文件目录返回树形结构

时间:2019-06-29 11:48:05

相关推荐

java读取文件目录返回树形结构

为实现读取文件目录下的文件信息,生成树形结构,以方便前端做一些展示

1.结构实体类

package ic.instdb.model.system;import lombok.Data;import org.springframework.data.annotation.Id;import org.springframework.data.mongodb.core.mapping.Document;/*** @Auther wdd* @Date /9/9 18:58* @Desc 文件结构信息*/@Data@Document(collection = "resource_file_tree")public class ResourceFileTree {@Idprivate String id;private int treeId;private int pid;private String resourcesId;private String fileName;private String filePath;private Long size;private Boolean isFile;private boolean expanded = false;}

2.读取文件目录工具类

package ic.instdb.utils;import ic.instdb.model.system.ResourceFileTree;import mons.lang3.StringUtils;import java.io.File;import java.util.*;/*** @author wdd* @version 1.0* @date /11/29 14:57*/public class FileTree {//用于储存找到的每一个文件List<ResourceFileTree> node=new LinkedList();/*** 读取文件目录返回树形结构* @param path 文件路径* @param id 每条记录的id* @param pid 父id* @param resourcesId 数据资源的id* @param fileFilter 过滤掉某个命名的文件* @return*/private List<ResourceFileTree> getFile(String path, int id, int pid, String resourcesId,String fileFilter) {File file = new File(path);if(file.exists()) {File[] array = file.listFiles();List fileList = Arrays.asList(array);//对读到的本地文件夹进行排序Collections.sort(fileList, new Comparator<File>() {@Overridepublic int compare(File o1, File o2) {if (o1.isDirectory() && o2.isFile()){return -1;}if (o1.isFile() && o2.isDirectory()){return 1;}return o1.getName().compareTo(o2.getName());}});for (int i = 0; i < array.length; i++) {ResourceFileTree resourceFileTree = new ResourceFileTree();//过滤文件if(StringUtils.isNotBlank(fileFilter) && fileFilter.equals(array[i].getName())){continue;}resourceFileTree.setResourcesId(resourcesId);resourceFileTree.setPid(pid);resourceFileTree.setTreeId(id);resourceFileTree.setFilePath(array[i].getPath());resourceFileTree.setFileName(array[i].getName());resourceFileTree.setIsFile(array[i].isFile());resourceFileTree.setExpanded(false);//判断是否为文件夹,是的话进行递归if (array[i].isDirectory()) {node.add(resourceFileTree);//进行递归,此时的pid为上一级的idgetFile(array[i].getPath(), id * 10 + 1 + i, id,resourcesId,fileFilter);id++;} else {resourceFileTree.setSize(array[i].length());node.add(resourceFileTree);id++;}}}return node;}public List<ResourceFileTree> getFileTree(String resourcesId, String path,String fileFilter) {node.removeAll(node);FileTree counter = new FileTree();int level=0;List<ResourceFileTree> file = counter.getFile(path, 1, level,resourcesId,fileFilter);return file;}public static void main(String[] args) {FileTree counter = new FileTree();List<ResourceFileTree> fileResourceFileTree = counter.getFileTree("5asd5as6d8asdas4dqw873e4", "D:\\wdd_work\\学习资料","neo4j图库安装文档.doc");System.out.println(fileResourceFileTree.size());System.out.println(fileResourceFileTree);}}

就这么简单,亲测已经成功使用中,如果有问题欢迎留言讨论~

如果对你有所帮助,别忘了点赞让我知道。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。