in src/main/java/org/apache/commons/io/file/PathUtils.java [161:198]
private RelativeSortedPaths(final Path dir1, final Path dir2, final int maxDepth, final LinkOption[] linkOptions,
final FileVisitOption[] fileVisitOptions) throws IOException {
final List<Path> tmpRelativeDirList1;
final List<Path> tmpRelativeDirList2;
List<Path> tmpRelativeFileList1 = null;
List<Path> tmpRelativeFileList2 = null;
if (dir1 == null && dir2 == null) {
equals = true;
} else if (dir1 == null ^ dir2 == null) {
equals = false;
} else {
final boolean parentDirNotExists1 = Files.notExists(dir1, linkOptions);
final boolean parentDirNotExists2 = Files.notExists(dir2, linkOptions);
if (parentDirNotExists1 || parentDirNotExists2) {
equals = parentDirNotExists1 && parentDirNotExists2;
} else {
final AccumulatorPathVisitor visitor1 = accumulate(dir1, maxDepth, fileVisitOptions);
final AccumulatorPathVisitor visitor2 = accumulate(dir2, maxDepth, fileVisitOptions);
if (visitor1.getDirList().size() != visitor2.getDirList().size() || visitor1.getFileList().size() != visitor2.getFileList().size()) {
equals = false;
} else {
tmpRelativeDirList1 = visitor1.relativizeDirectories(dir1, true, null);
tmpRelativeDirList2 = visitor2.relativizeDirectories(dir2, true, null);
if (!equalsIgnoreFileSystem(tmpRelativeDirList1, tmpRelativeDirList2)) {
equals = false;
} else {
tmpRelativeFileList1 = visitor1.relativizeFiles(dir1, true, null);
tmpRelativeFileList2 = visitor2.relativizeFiles(dir2, true, null);
equals = equalsIgnoreFileSystem(tmpRelativeFileList1, tmpRelativeFileList2);
}
}
}
}
// relativeDirList1 = tmpRelativeDirList1;
// relativeDirList2 = tmpRelativeDirList2;
relativeFileList1 = tmpRelativeFileList1;
relativeFileList2 = tmpRelativeFileList2;
}