1

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());
4

1 に答える 1

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;
    }
}
于 2013-04-15T18:57:35.910 に答える