java filefilter仅列出目录

quhf5bfb  于 2021-07-03  发布在  Java
关注(0)|答案(3)|浏览(327)

所以我只想列出指定目录中的目录。我尝试了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");
    }
});

有什么建议吗?

elcex8rz

elcex8rz1#

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

return new File(file, name).isDirectory();

你能试一下这里的例子吗?

k75qkfdt

k75qkfdt2#

谢谢大家的回答
不知何故,当我创造了一个mcve它的工作。但原始代码仍然需要修复。经过一段时间的尝试,我找到了一个可行的方法(不知道为什么会这样,以前也没用过。)

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");
    }
});

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

bvhaajcl

bvhaajcl3#

isDirectory() 文件:
如果需要将i/o异常与文件不是目录的情况区分开来,或者需要同时使用同一文件的多个属性,则可以使用files.readattributes方法。
你能试试这个吗 readAttributes 方法?也许你会得到一些io异常来澄清问题。

相关问题