遍历文件树而不进行递归和堆栈Java

时间:2017-04-23 07:51:37

标签: 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 {}
    }
}

谢谢!

1 个答案:

答案 0 :(得分:0)

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

尝试扩展它。

所有堆栈确实为您提供了一些“内存”,因为您无法在当前分支中找到所需内容时可以返回树。