特定のディレクトリ内のディレクトリのすべての名前を取得する方法を探していますが、ファイルは取得しません。
たとえば、 というフォルダがありParent
、その中に と の 3 つのフォルダがあるChild1
Child2
としChild3
ます。
フォルダーの名前を取得したいのですが、内容や、Child1、Child2 などのサブフォルダーの名前は気にしません。
これを行う簡単な方法はありますか?
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();
}
}
を使用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);
}
}