我正在使用DirectoryWalker,我想创建一个过滤器,列出包含xml文件的所有目录。我不想自己列出文件但只列出他们的直接父母?如果目录只有目录我不想列出它。你认为这是可行的吗?
我一直在http://people.apache.org/~jochen/commons-io/site/apidocs/org/apache/commons/io/DirectoryWalker.html#filter查看样本,但我找不到一个似乎做我想做的事。
public class ExtractedDirectoryWalker extends DirectoryWalker {
public ExtractedDirectoryWalker() {
super();
}
public ArrayList<File> getDirectories(File startDirectory) throws IOException {
ArrayList<File> dirs = new ArrayList<File>();
walk(startDirectory, dirs);
return dirs;
}
@Override
protected boolean handleDirectory(File directory, int depth,
Collection results) {
results.add(directory);
return true;
}
}
来自另一个班级:
List<File> directories = new ExtractedDirectoryWalker()
.getDirectories(outputFolder.toFile());
答案 0 :(得分:0)
我没有测试过代码,但我认为这应该可行:
private static final FileFilter filter = new XMLChildFileFilter();
public ExtractedDirectoryWalker() {
super(filter, -1);
}
private static class XMLChildFileFilter implements FileFilter {
@Override
public boolean accept(File file) {
if(file == null || !file.isDirectory() || !file.canRead()) {
return false;
}
File[] files = file.listFiles();
for(File f : files) {
if(f.isFile()) {
if(FilenameUtils.getExtension(f.getName()).equals("xml"))
return true;
}
}
return false;
}
}