最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)文章

  • idea打開運行配置java?web項目的全過程

    idea打開運行配置java?web項目的全過程

    這篇文章主要給大家介紹了關(guān)于idea打開運行配置java?web項目的相關(guān)資料,有些時候我們用IDEA跑之前用eclipse中運行的項目的時候,總是不止所措,要不就是只展示html,要不就是不能部署成功,需要的朋友可以參考下
    2023-08-08
  • Java實現(xiàn)加密傳輸與匿名化的實戰(zhàn)指南

    Java實現(xiàn)加密傳輸與匿名化的實戰(zhàn)指南

    隨著智慧交通系統(tǒng)的普及,交通數(shù)據(jù)已成為城市大腦的“血液”,然而,這些數(shù)據(jù)中包含的車牌號、位置坐標(biāo)、出行時間等敏感信息,若未妥善保護,可能引發(fā)一系列風(fēng)險,所以本文將通過 Java 實現(xiàn)加密傳輸與匿名化的實戰(zhàn),需要的朋友可以參考下
    2025-09-09
  • SpringBoot整合SpringDataJPA

    SpringBoot整合SpringDataJPA

    這篇文章主要介紹了SpringBoot整合SpringDataJPA代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-07-07
  • java 加密之RSA算法加密與解密的實例詳解

    java 加密之RSA算法加密與解密的實例詳解

    這篇文章主要介紹了java 加密之RSA算法加解密與解密的實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Java excel數(shù)據(jù)導(dǎo)入mysql的實現(xiàn)示例詳解

    Java excel數(shù)據(jù)導(dǎo)入mysql的實現(xiàn)示例詳解

    今天教大家如何使用Java將excel數(shù)據(jù)導(dǎo)入MySQL,文中有非常詳細的代碼示例,對正在學(xué)習(xí)java的小伙伴呢很有幫助,需要的朋友可以參考下
    2022-08-08
  • SpringBoot項目中連接Gauss數(shù)據(jù)庫

    SpringBoot項目中連接Gauss數(shù)據(jù)庫

    本文主要介紹了SpringBoot項目中連接Gauss數(shù)據(jù)庫,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • java實現(xiàn)猜數(shù)字小游戲

    java實現(xiàn)猜數(shù)字小游戲

    這篇文章主要為大家詳細介紹了java實現(xiàn)猜數(shù)字小游戲,隨機給定一個數(shù)字,直到猜對大小,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Java實現(xiàn)鼠標(biāo)拖拽移動界面組件

    Java實現(xiàn)鼠標(biāo)拖拽移動界面組件

    在Java中,F(xiàn)rame或者JFrame自身已經(jīng)實現(xiàn)了鼠標(biāo)拖拽標(biāo)題欄移動窗口的功能。但是Jframe的樣式實在無法令人滿意,那你又該怎么實現(xiàn)鼠標(biāo)拖拽移動窗口的目的呢?今天我們來探討下
    2014-09-09
  • spring mvc路徑匹配原則詳解

    spring mvc路徑匹配原則詳解

    這篇文章主要介紹了spring mvc路徑匹配原則詳解,小編覺得還是挺不錯的,這里分享給大家,需要的朋友可以參考下,下面就和小編一起來看看吧
    2018-02-02
  • java 中clone()的使用方法

    java 中clone()的使用方法

    這篇文章主要介紹了java 中clone()的使用方法的相關(guān)資料,希望通過本文能幫助大家能掌握clone()的克隆方法,需要的朋友可以參考下
    2017-09-09

最新評論

张掖市| 闸北区| 五华县| 资兴市| 磐石市| 汪清县| 靖远县| 环江| 博爱县| 隆安县| 德保县| 武威市| 大安市| 鲜城| 莎车县| 太康县| 宁国市| 洛川县| 兴宁市| 长治县| 望城县| 翁牛特旗| 敦化市| 绥棱县| 克什克腾旗| 天等县| 沧州市| 永胜县| 怀来县| 庆元县| 漳浦县| 樟树市| 德庆县| 新密市| 内乡县| 保康县| 施秉县| 泾川县| 邯郸市| 玛纳斯县| 伊金霍洛旗|