java - 不使用递归且使用堆栈 Java 遍历文件树

标签 java path

请问如何使用 Java 在不使用递归和堆栈的情况下遍历文件树/目录。

public void traverse(Path path)
throws IOException
{
    Stack<Stream<Path>> st = new Stack<>();
    st.add(Files.list(path));
    for(Iterator<Path> it = st.peek().iterator(); it.hasNext(); )
    {
        Path temp = it.next();
        final BasicFileAttributes fa = Files.readAttributes(temp, BasicFileAttributes.class);
        if(fa.isDirectory())
        {
            //list all the directory contents
            st.push(Files.list(temp));
        }
        else if(fa.isRegularFile())
        {
        }
        else if(fa.isSymbolicLink()) {} //symbolic link
        else if(fa.isOther()) {} //other
        else {}
    }
}

谢谢!

最佳答案

本质上你有一棵路径树。像遍历任何其他树一样遍历它。 它们为二叉树的迭代、堆栈辅助、有序、遍历提供了一个很好的示例 here

尝试扩展它。

堆栈所做的只是为您提供一些关于您来自何处的“内存”,以便您在无法在当前分支中找到所需内容时可以返回树。

关于java - 不使用递归且使用堆栈 Java 遍历文件树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43568683/

相关文章:

Java:将所有路径移动到单独的文件

algorithm - 用于在未加权有向图中查找两个节点之间的最短路径的最有效(Big O)算法

java - 工具栏中的SearchView不过滤ListFragment

java - 如何编译和运行具有多个包或源文件的Java代码

c++ - 如何在 C 中找到可执行文件的位置?

Python numpy 从 1.6 更新到 1.8

javascript - 我的bundle.js似乎没有创建

java - JRE 如何拾取重复的类

java - 如何在响应式网页中为一行使用单个网页元素

java - 在 Java Play Framework 2.2.x 中启用 CORS