Java:列出目录中的目录的一行程序?

8oomwypt  于 2023-01-24  发布在  Java
关注(0)|答案(4)|浏览(149)

用于列出TXT文件的单行程序。

import java.io.File;
import java.io.FilenameFilter;
...
files = dir.listFiles(new FilenameFilter() {
           public boolean accept(File dir, String name) {
                return name.toLowerCase().endsWith(".txt");
                }
           }
        );

Source.

是否有一行程序可以列出目录中的目录?

fkaflof6

fkaflof61#

public static void main (String[] args)  throws Exception {
    File dir = new File("yourDir");

    FileFilter fileFilter = new FileFilter() {
        public boolean accept(File file) {
            return file.isDirectory();
        }
    };

    File[] files  = dir.listFiles(fileFilter);

    for (File f : files)
        System.out.println( f.getName() );
}
ukqbszuj

ukqbszuj2#

这使用Commons IO,但实际上是列出所有目录名的最简单方法。它还有一组功能更强大的过滤器,您可以将其用于其他目的:

String[] dirNames = new File("/Users/jonathan").list(DirectoryFileFilter.INSTANCE);
for (String dirName: dirNames) 
    System.out.println("Directory Name: " + dirName);
yeotifhr

yeotifhr3#

import java.io.File;
import java.io.FileFilter;
...
files = dir.listFiles(new FileFilter() { 
       public boolean accept(File pathname) { 
            return pathname.isDirectory();
       } 
    });

请注意,此处使用的是listFiles(FileFilter),而不是listFiles(FilenameFilter)

p4rjhz4m

p4rjhz4m4#

您需要导入java.nio.file.Files和java.nio.file. path,这两个文件从Java 1.7开始就可用。然后使用Java 1.8中引入的流,您可以执行以下操作:

Files.list(Paths.get(".")).filter(x -> Files.isDirectory(x)).forEach(System.out::println);

这将获取当前目录“."中的文件,列出它们,并过滤它们,以便只包含目录,然后使用println方法引用迭代目录流以将它们打印出来。
实际上,您也可以使用方法引用作为过滤器,如下所示:
文件列表(路径.get(“.”)).filter(文件::是目录).forEach(系统输出::打印输入);

相关问题