java如何讀取文件目錄返回樹形結(jié)構(gòu)
更新時間:2024年01月22日 09:09:35 作者:小棟喲
這篇文章主要介紹了java如何讀取文件目錄返回樹形結(jié)構(gòu)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
java讀取文件目錄返回樹形結(jié)構(gòu)
為實現(xiàn)讀取文件目錄下的文件信息,生成樹形結(jié)構(gòu),以方便前端做一些展示
1.結(jié)構(gòu)實體類
package cn.cnic.instdb.model.system; import lombok.Data; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; /** * @Auther wdd * @Date 2021/9/9 18:58 * @Desc 文件結(jié)構(gòu)信息 */ @Data @Document(collection = "resource_file_tree") public class ResourceFileTree { @Id private 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 cn.cnic.instdb.utils; import cn.cnic.instdb.model.system.ResourceFileTree; import org.apache.commons.lang3.StringUtils; import java.io.File; import java.util.*; /** * @author wdd * @version 1.0 * @date 2021/11/29 14:57 */ public class FileTree { //用于儲存找到的每一個文件 List<ResourceFileTree> node=new LinkedList(); /** * 讀取文件目錄返回樹形結(jié)構(gòu) * @param path 文件路徑 * @param id 每條記錄的id * @param pid 父id * @param resourcesId 數(shù)據(jù)資源的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>() { @Override public 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為上一級的id getFile(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\\學(xué)習(xí)資料","neo4j圖庫安裝文檔.doc"); System.out.println(fileResourceFileTree.size()); System.out.println(fileResourceFileTree); } }
總結(jié)
就這么簡單,親測已經(jīng)成功使用中~
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java String.replace()方法"無效"的原因及解決方式
這篇文章主要介紹了Java String.replace()方法"無效"的原因及解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08SpringBoot+Vue靜態(tài)資源刷新后無法訪問的問題解決方案
這篇文章主要介紹了SpringBoot+Vue靜態(tài)資源刷新后無法訪問的問題解決方案,文中通過代碼示例和圖文講解的非常詳細,對大家解決問題有一定的幫助,需要的朋友可以參考下2024-05-05