2012-03-03 64 views
0

所以对于一个项目我有2个目录结构。这些目录位于2个不同的位置,它们各自的目录结构和文件内容是相同的(只是文件内容不同)。迭代2个类似目录结构的最简单方法是什么?

现在我想通读这两个目录树,创建它们包含的文件的“组合”。

一个清晰的例子;这两个目录树是这样的:

directory1 
    directory2 
     file1 
     file2 
    file3 
    file4 

现在我想文件1的两个文件情况下从两个目录树相匹配。

java File类只允许我创建其内容的File []数组。我是否必须遍历它返回的列表才能找到匹配的File实例,或者我可以使用更好的方法吗?

+0

你是什么意思创建'combos'和匹配'文件实例'? – John 2012-03-03 16:52:13

+0

@John:基本上找到匹配名称的文件。如果在一个目录中有一个像“foo.txt”这样的文件,我想在“相同”位置的另一个目录树(例如,与两个目录树的根相同的相对路径)中找到匹配的foo.txt文件。 – Bartvbl 2012-03-03 17:24:27

+0

好的。傻我。当您在File类上执行listFiles()调用时,您将得到一个对于两个目录都是相同的列表,因为两个目录树都是相等的。 – Bartvbl 2012-03-03 17:30:51

回答

0

我就记下这里我如何解决它:

public static File[] getDirectoryList(File file) { 
    File[] files = file.listFiles(new FileFilter() { 
     public boolean accept(File file) { 
      return file.isDirectory(); 
     } 
    }); 
    return files; 
} 

这里这段代码获取文件istance的所有子目录。由于两个目录树相同,所以返回的File []列表将与文件树中相应的2个File实例相同。

如果您不想使目录中包含的所有文件都更改为“return file.isDirectory();”到“return file.isFile();”。

+0

这是我最终使用的方法,尽管Apache也值得一看。 – Bartvbl 2014-03-05 09:12:07

1

如果你愿意使用第三方罐子,我的建议是:
http://commons.apache.org/io/api-release/org/apache/commons/io/FileUtils.html
否则,你必须写自己的方法来对递归遍历文件夹。

+0

hm。我经常看到人们提到apache的东西,尽管我从来没有真正使用它。我已经使用普通的Java库计算出了它,但感谢您的答案。我可能会检查一下apache的东西,看看他们得到了什么:) – Bartvbl 2012-03-03 17:34:36

相关问题