请,如何在没有递归的情况下遍历文件树/目录,并使用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 {}
}
}
谢谢!
答案 0 :(得分:0)
基本上你有一棵路径树。像任何其他树一样遍历它。 它们为迭代,堆栈辅助,有序,遍历二叉树here提供了一个很好的例子。
尝试扩展它。
所有堆栈确实为您提供了一些“内存”,因为您无法在当前分支中找到所需内容时可以返回树。