Java 迭代2个类似目录结构的最简单方法是什么?
对于一个项目,我有两个目录结构。这些目录位于两个不同的位置,它们各自的目录结构和文件内容是等效的(只是文件的内容不同) 现在我想通读这两个目录树,创建它们包含的文件的“组合” 一个清晰的例子;两个目录树如下所示:Java 迭代2个类似目录结构的最简单方法是什么?,java,Java,对于一个项目,我有两个目录结构。这些目录位于两个不同的位置,它们各自的目录结构和文件内容是等效的(只是文件的内容不同) 现在我想通读这两个目录树,创建它们包含的文件的“组合” 一个清晰的例子;两个目录树如下所示: directory1 directory2 file1 file2 file3 file4 现在我想从两个目录树中匹配file1的两个文件实例 java File类只允许我创建其内容的File[]数组。我是否必须循环查看它返回的
directory1
directory2
file1
file2
file3
file4
现在我想从两个目录树中匹配file1的两个文件实例
java File类只允许我创建其内容的File[]数组。我是否必须循环查看它返回的列表以查找匹配的文件实例,或者我可以使用更好的方法?如果您愿意使用第三方JAR,我建议:
否则,您必须编写自己的方法来递归地迭代文件夹。我将在这里简要说明我是如何解决的:
public static File[] getDirectoryList(File file) {
File[] files = file.listFiles(new FileFilter() {
public boolean accept(File file) {
return file.isDirectory();
}
});
return files;
}
这里的代码获取文件istance的所有子目录。由于两个目录树是相等的,因此从文件树返回的文件[]列表对于相应的2个文件入口是相同的
如果您希望目录包含所有文件,请将行“return file.isDirectory();”更改为“return file.isFile();”创建
组合和匹配文件实例是什么意思?@John:基本上是查找具有匹配名称的文件。如果在一个目录中有一个类似“foo.txt”的文件,我想在另一个目录树中的“相同”位置找到匹配的foo.txt(例如,两个目录树根的相同相对路径)。确定。我真傻。当您对File类执行listFiles()调用时,会得到一个列表,该列表对于两个目录都是相同的,因为两个目录树都是相等的。hm。我经常看到人们提到apache的东西,尽管我自己从来没有真正使用过它。我现在已经用常规java库解决了这个问题,不过还是要谢谢你的回答。。我可能会在某个时候查看apache的内容,看看他们得到了什么:)这是我最终使用的方法,尽管apache也确实值得一看。