Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 迭代2个类似目录结构的最简单方法是什么?_Java - Fatal编程技术网

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也确实值得一看。