Java,仅列出目录中的子目录,而不列出文件

2022-08-31 08:59:38

在Java中,如何仅列出目录中的子目录?

我想使用java.io.File功能,Java中执行此操作的最佳方法是什么?


答案 1

可以使用 File 类列出目录。

File file = new File("/path/to/directory");
String[] directories = file.list(new FilenameFilter() {
  @Override
  public boolean accept(File current, String name) {
    return new File(current, name).isDirectory();
  }
});
System.out.println(Arrays.toString(directories));

更新

作者对这篇文章的评论想要一个更快的方法,在这里进行精彩的讨论:如何在Java中快速检索目录列表?

基本上:

  1. 如果您控制文件结构,我会尽量避免陷入这种情况。
  2. 在Java NIO.2中,您可以使用目录函数返回迭代器以允许更大的扩展。目录流类是可用于循环访问目录中的条目的对象。

答案 2

一个非常简单的Java 8解决方案:

File[] directories = new File("/your/path/").listFiles(File::isDirectory);

它相当于使用FileFilter(也适用于较旧的Java):

File[] directories = new File("/your/path/").listFiles(new FileFilter() {
    @Override
    public boolean accept(File file) {
        return file.isDirectory();
    }
});