如果给定一个本质上是根节点的节点,您将如何遍历文件系统树?由于它是迭代,我必须定义的唯一两个方法是hasNext()和next()。我知道我必须使用listFiles(),isDirectory()和exists(),但我不确定如何实现它们。我不想要任何代码,但我希望有人可以给我一些关于如何进行hasNext()或next()的见解。再次感谢您的帮助!
答案 0 :(得分:0)
首先你可以定义一个像
这样的函数listrecursive(Element e)
接收一个元素。如果此元素是目录,则为该目录中的每个元素调用listrecurisive函数。当然要遍历所有元素,你可以使用迭代器,即
function listrecursive(Element e){
if(e isDirectory){
Iterator iter = e.iterator();
while(iter.hasNext()){
Element ie = iter.next();
listRecursive(ie);
}
}
else{
//process file
}
}
Sry但我必须包含一些代码......至少它不会运行,我保证; - )
答案 1 :(得分:0)
我猜递归将是最佳匹配:
private void getDirectoryStructure(String rootNode) {
List<String> fileList = new LinkedList<String>();
getSubDirectories(new File(rootNode), fileList);
// fileList got the data you need
}
public static void getSubDirectories(File rootNode, List<String> fileList){
if(rootNode.isDirectory()){
fileList.add(rootNode.getAbsolutePath());
File[] subDirectory = rootNode.listFiles();
for(File sub : subDirectory){
getSubDirectories(sub, fileList);
}
}
}