通过文件系统树java迭代

时间:2015-03-26 01:45:25

标签: java filesystems iteration

如果给定一个本质上是根节点的节点,您将如何遍历文件系统树?由于它是迭代,我必须定义的唯一两个方法是hasNext()和next()。我知道我必须使用listFiles(),isDirectory()和exists(),但我不确定如何实现它们。我不想要任何代码,但我希望有人可以给我一些关于如何进行hasNext()或next()的见解。再次感谢您的帮助!

2 个答案:

答案 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);
        }
    }
}