ディレクトリの下にあるすべてのファイル、特にサブディレクトリを含むすべてのファイルのリストを収集したいと思います。私は自分で物事をするのが好きではないので、ApacheCommonsIOFileUtils.listFiles
から使用しています。だから私は次のようなものを持っています:
import java.io.File;
import java.util.Collection;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.TrueFileFilter;
public class TestListFiles {
public static void main(String[] args) {
Collection<File> found = FileUtils.listFiles(new File("foo"),
TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);
for (File f : found) {
System.out.println("Found file: " + f);
}
}
}
問題は、これは通常のファイルのみを検索し、ディレクトリは検索しないように見えることです。
$ mkdir -p foo/bar/baz; touch foo/one_file
$ java -classpath commons-io-1.4.jar:. TestListFiles
Found file: foo/one_file
私はすでにTrueFileFilter
両方のフィルターに合格しているので、これ以上包括的なものは考えられません。私はそれをリストしたい:("foo", "foo/one_file", "foo/bar", "foo/bar/baz"
任意の順序で)。
非ソリューションも受け入れFileUtils
ますが、独自のBFSを作成する必要がある、または取得したリストから親ディレクトリのセットを収集する必要があるのはばかげているようです。(とにかく空のサブディレクトリを見逃してしまいます。)これはLinux、FWIWにあります。