java 遍历目录 树 递归 控制深度 层数

这篇具有很好参考价值的文章主要介绍了java 遍历目录 树 递归 控制深度 层数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

控制递归深度 

在查询数据库树结构或者目录时,通常需要控制深度,或者到第几层。

import java.io.File;
import java.util.*;

public class test4 {
    public static List<File> findFiles(File files, int count) {
        List<File> result = new ArrayList<File>();
        //判断深度
        if (count == 0) {
            return result;
        }
        if (files.listFiles() == null) {
            System.out.println("这不是一个有效的目录");
            return result;
        }
        //count在当前函数内是相同,进入到下一级函数,减少1
        for(File item : files.listFiles()) {
            if(item.isDirectory()) {
                result.add(item);
                result.addAll(findFiles(item, count - 1));
            } else {
                result.add(item);
            }
        }
        return result;
    }

    public static void main(String[] args) {
        List<File> files = findFiles(new File("D://test"),2);
        for(File i:files) {
            System.out.println(i);
        }
    }
}

解读 

count为2时, files.listFiles()拿到的是a1,a2。

从a1进入到下一层函数,把1传进去了。files.listFiles()拿到的是b1,这里的count是1。

从a2进入到下一层函数,也是把1传进去了。files.listFiles()拿到的是b2,这里的count是1。

- test

        - a1

                - b1

        - a2

                - b2

        

参考

https://www.cnblogs.com/allmignt/p/12353726.html

 

获取目录下的子目录及文件

    public void readfile(String filepath) throws FileNotFoundException, IOException {
        File file = new File(filepath);
        if (!file.isDirectory()) {
            System.out.println("文件:" + "path=" + file.getPath() + ",absolutepath=" + file.getAbsolutePath() + ",name=" + file.getName());
        } else if (file.isDirectory()) {
            System.out.println("目录:" + "path=" + file.getPath() + ",absolutepath=" + file.getAbsolutePath() + ",name=" + file.getName());
            String[] filelist = file.list();
            for (int i = 0; i < filelist.length; i++) {
                readfile(filepath + "\\" + filelist[i]);
            }
        }
    }

参考

java 获取目录和文件名 File 递归_globalcoding的博客-CSDN博客

 

=========================分割线========================== 

以下是紫薯布丁 

import java.io.File;
import java.util.*;

public class test4 {
    public static List<File> findFiles(File files, int count) {
        List<File> result = new ArrayList<File>();
        //判断深度
        if (count == 0) {
            return result;
        }
        if (files.listFiles() == null) {
            System.out.println("这不是一个有效的目录");
            return result;
        }
        //count在当前函数内是相同,进入到下一级函数,减少1
        for(File item : files.listFiles()) {
            if(item.isDirectory()) {
                result.add(item);
                result.addAll(findFiles(item, count - 1));
            } else {
                result.add(item);
            }
        }
        return result;
    }

    public static void main(String[] args) {
        List<File> files = findFiles(new File("D://test"),2);
        for(File i:files) {
            System.out.println(i);
        }
    }
}

    public void readfile(String filepath) throws FileNotFoundException, IOException {
        File file = new File(filepath);
        if (!file.isDirectory()) {
            System.out.println("文件:" + "path=" + file.getPath() + ",absolutepath=" + file.getAbsolutePath() + ",name=" + file.getName());
        } else if (file.isDirectory()) {
            System.out.println("目录:" + "path=" + file.getPath() + ",absolutepath=" + file.getAbsolutePath() + ",name=" + file.getName());
            String[] filelist = file.list();
            for (int i = 0; i < filelist.length; i++) {
                readfile(filepath + "\\" + filelist[i]);
            }
        }
    }
 文章来源地址https://www.toymoban.com/news/detail-528889.html

到了这里,关于java 遍历目录 树 递归 控制深度 层数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构与算法学习:二叉树的后序遍历的递归与非递归实现,以及非递归实现中的流程控制的说明。

    需求二叉树: 采用二叉树后序遍历非递归算法。设置一个指针p初始指向树根,p先入栈,而后使得p指向它的左孩子p-firstchild,重复操作,使得每个左孩子都依次入栈,同时初始化一个Treenode*类型的指针 pre,这个指针是后序前驱,这个后序前驱用以区分为已访问过的结点和未

    2023年04月22日
    浏览(47)
  • 每天一道leetcode:剑指 Offer 34. 二叉树中和为某一值的路径(中等&图论&深度优先遍历&递归)

    给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 树中节点总数在范围 [0, 5000] 内 -1000 = Node.val = 1000 -1000 = targetSum = 1000 使用递归深度优先遍历,使用前序遍历,在遍历途

    2024年02月12日
    浏览(48)
  • 【Java数据结构】二叉树的前中后序遍历(递归和非递归)

    二叉树遍历是二叉树的一种重要操作 必须要掌握 二叉树的遍历可以用递归和非递归两种做法来实现 前序遍历的遍历方式是 先根节点 在左节点 在右节点 述这棵树前序遍历的结果是: A B D E C F G 递归的思想就是把问题拆分成一个个小问题来解决 treeNode是一个内部类 具体实现

    2023年04月26日
    浏览(51)
  • JAVA安全之目录遍历漏洞

    路径(目录)遍历是攻击者能够访问或存储应用程序运行位置之外的文件和目录的漏洞。这可能会导致从其他目录读取文件,并且在文件上传覆盖关键系统文件的情况下。 例如,假设我们有一个托管一些文件的应用程序,并且可以按以下格式请求它们:http://example.com/file=re

    2024年02月08日
    浏览(43)
  • 用java实现二叉树的后序遍历(递归和迭代)

    目录 1.题目内容 2.用递归实现后序遍历 2.1解题思路 2.2代码 3.用迭代实现后序遍历 3.1解题思路 3.2代码 给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。 示例 1: 输入:root = [1,null,2,3] 输出:[3,2,1] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1]

    2024年02月08日
    浏览(54)
  • Java文件操作(遍历目录中的文件,找到并删除有指定关键字的文件)

    对于通过java对文件继续读取和写入的操作推荐看读取文件和写入文件操作         扫描指定目录中的文件,并找到名称中包含指定字符的所有普通文件(不包括目录),并后续询问用户是否要删除该文件         实际上题目就要求我们对一个指定的目录下的文件进行遍历

    2024年02月13日
    浏览(44)
  • 【数据结构】树与二叉树(一):树(森林)的基本概念:父亲、儿子、兄弟、后裔、祖先、度、叶子结点、分支结点、结点的层数、路径、路径长度、结点的深度、树的深度

    树 一棵树是结点的有限集合T: 若T非空,则: 有一个特别标出的结点,称作该树的 根 ,记为root(T); 其余结点分成若干个不相交的非空集合T1, T2, …, Tm (m0),其中T1, T2, …, Tm又都是树,称作root(T)的 子树 。 T 空时为空树,记作root(T)=NULL。 有序树、无序树   如果子树T1, T

    2024年02月05日
    浏览(55)
  • 二叉树的遍历(先序遍历,中序遍历,后序遍历)递归与非递归算法

    先序遍历:先遍历一颗树的根节点,后遍历左子树,最后遍历右子树     先序遍历序列: 1 - 2 - 4 - 5 - 3 - 6 - 7 分解子问题方法 思路:将一颗二叉树看做两个部分,一个部分是左路节点,另一个部分是左路节点的右子树,先将二叉树的左路节点全部入栈,再依次出栈,出栈的

    2024年02月14日
    浏览(37)
  • 二叉树遍历之后序遍历(非递归、递归)入门详解

    二叉树的遍历常见的方法有先序遍历、中序遍历、后序遍历和层次遍历等,本文给出了C语言版本的后序遍历二叉树的非递归算法和递归算法。 后序遍历不如先序遍历简单,是相对最复杂的一种遍历方法。访问结点的次序是:“左—右—根”,也就是首先访问左子树,之后访

    2024年02月04日
    浏览(45)
  • 二叉树遍历之中序遍历算法(非递归、递归)入门详解

    一、引言 二叉树的遍历常见的方法有先序遍历、中序遍历、后序遍历和层次遍历等,本文给出了C语言版本的中序遍历二叉树的非递归算法和递归算法。 中序遍历的原理很简单,也就是把树根的访问放在中间。访问结点的次序是:“左—根—右”,也就是首先访问左子树,之

    2024年02月06日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包