Java FileFilter仅列出目录

Java FileFilter仅列出目录,java,Java,所以我只想列出指定目录中的目录。我尝试了FileFilter和FilenameFilter。两者都不适用于我,因为它们还包括文件。但不知怎么的,其他人也不会有这个问题 java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8.0_144-b01) Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode) 文件筛选器: private static

所以我只想列出指定目录中的目录。我尝试了FileFilter和FilenameFilter。两者都不适用于我,因为它们还包括文件。但不知怎么的,其他人也不会有这个问题

java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
文件筛选器:

private static File maps_dir_src = new File("./maps/");
private static File[] maps_arr_src = maps_dir_src.listFiles(new FileFilter() {

    @Override
    public boolean accept(File file) {
        return file.isDirectory() && !file.getName().toLowerCase().equals("lobby");
    }
});
文件名筛选器:

private static File maps_dir_src = new File("./maps/");
private static File[] maps_arr_src = maps_dir_src.listFiles(new FilenameFilter() {

    @Override
    public boolean accept(File file, String name) {
        return file.isDirectory() && !name.toLowerCase().equals("lobby");
    }
});

有什么提示吗?

您的FileFilter代码看起来有效;对于FilenameFilter,您需要:

return new File(file, name).isDirectory();
您还可以尝试以下文档中的示例吗?

来自
isDirectory()
docs:

如果需要将I/O异常与文件不是目录的情况区分开来,或者需要同时使用同一文件的多个属性,则可以使用Files.readAttributes方法


你能试试
readAttributes
方法吗?也许你会得到一些IO异常,这将澄清问题。

谢谢你的回答@Everyone

不知怎的,当我创造了一个MCVE,它的工作。但是原始代码仍然需要修复。尝试了一段时间后,我找到了一种有效的方法。(不知道为什么它会这样工作,而且以前没有工作过。)

编辑:不知何故,此修复程序仅适用于macos,而不适用于windows://

您可以发布
private static File maps_dir_src = new File("./maps/");
private static File[] maps_arr_src = maps_dir_src.listFiles(new FileFilter() {

    @Override
    public boolean accept(File file) {
        return file.isDirectory() && !file.getName().equalsIgnoreCase("lobby");
    }
});