22

特定のディレクトリ内のディレクトリのすべての名前を取得する方法を探していますが、ファイルは取得しません。

たとえば、 というフォルダがありParent、その中に と の 3 つのフォルダがあるChild1 Child2としChild3ます。

フォルダーの名前を取得したいのですが、内容や、Child1、Child2 などのサブフォルダーの名前は気にしません。

これを行う簡単な方法はありますか?

4

3 に答える 3

24

Java 7 を使用している場合は、で提供されているサポートを使用してみてください。

package java.nio.file 

ディレクトリに多くのエントリがある場合、最初にすべてのエントリをメモリに読み込まなくても一覧表示を開始できます。javadoc で詳細を読む: http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#newDirectoryStream(java.nio.file.Path,%20java.lang.String )

また、ニーズに合わせた例を次に示します。

public static void main(String[] args) {
    DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<Path>() {
        @Override
        public boolean accept(Path file) throws IOException {
            return (Files.isDirectory(file));
        }
    };

    Path dir = FileSystems.getDefault().getPath("c:/");
    try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, filter)) {
        for (Path path : stream) {
            // Iterate over the paths in the directory and print filenames
            System.out.println(path.getFileName());
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
于 2012-11-24T08:28:49.993 に答える
22

を使用String[] directories = file.list()してすべてのファイル名をリストし、 loop を使用して各サブファイルをチェックし、file.isDirectory()function を使用してサブディレクトリを取得できます。

例えば:

File file = new File("C:\\Windows");
String[] names = file.list();

for(String name : names)
{
    if (new File("C:\\Windows\\" + name).isDirectory())
    {
        System.out.println(name);
    }
}
于 2012-11-23T17:30:23.410 に答える