下面列出了org.apache.commons.io.FilenameUtils#wildcardMatchOnSystem ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private List<File> findDirectoriesContainingDirectoriesToDepthRecursive(final File sourceDirectory, final String directoryPattern, final int currentDepth, final int maxDepth) {
final List<File> files = new ArrayList<>();
if (currentDepth > maxDepth || !sourceDirectory.isDirectory()) {
return files;
}
for (final File file : sourceDirectory.listFiles()) {
if (file.isDirectory()) {
if (FilenameUtils.wildcardMatchOnSystem(file.getName(), directoryPattern)) {
files.add(file);
} else {
files.addAll(findDirectoriesContainingDirectoriesToDepthRecursive(file, directoryPattern, currentDepth + 1, maxDepth));
}
}
}
return files;
}
@Override
public boolean shouldExclude(File file) {
for (final String excludedDirectory : excludedDirectories) {
if (FilenameUtils.wildcardMatchOnSystem(file.getName(), excludedDirectory)) {
return true;
}
}
return fileFilter.accept(file); //returns TRUE if it matches one of the file filters.
}
private List<File> findDirectoriesContainingFilesRecursive(final File sourceDirectory, final String filenamePattern, final int currentDepth, final int maxDepth) {
final Set<File> files = new HashSet<>();
if (currentDepth > maxDepth || !sourceDirectory.isDirectory()) {
return new ArrayList<>(files);
}
for (final File file : sourceDirectory.listFiles()) {
if (file.isDirectory()) {
files.addAll(findDirectoriesContainingFilesRecursive(file, filenamePattern, currentDepth + 1, maxDepth));
} else if (FilenameUtils.wildcardMatchOnSystem(file.getName(), filenamePattern)) {
files.add(sourceDirectory);
}
}
return new ArrayList<>(files);
}