因此,我只想列出指定目录中的目录。我同时尝试了FileFilter和FilenameFilter。这两个都不适合我,因为它们也包含Files。但不知何故,其他人对此没有问题。
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)FileFilter:
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");
}
});FilenameFilter:
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");
}
});有什么建议吗?
发布于 2017-09-05 06:56:45
感谢您的回答@所有人
不知何故,当我创建一个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");
}
});EDIT:这个修复程序只适用于macos,而不适用于windows :/
发布于 2017-09-05 03:40:51
您的FileFilter代码看起来是有效的;对于FilenameFilter,您需要这样:
return new File(file, name).isDirectory();您还可以尝试使用here中的示例吗
发布于 2017-09-05 04:15:16
来自isDirectory()文档:
如果需要区分I/O异常与文件不是目录的情况,或者同时需要同一文件的多个属性,则可以使用Files.readAttributes方法。
你能试试readAttributes方法吗?也许你会得到一些IO异常来澄清这个问题。
https://stackoverflow.com/questions/46042125
复制相似问题