我希望在Java 8中列出仅以.txt
扩展名结尾的文件名。
使用这段代码,我获取了所有文件名称,其中许多具有.txt扩展名:
List<Path> fileNames = Files.list(configFilePath)
.map(Path::getFileName)
.sorted()
.collect(toList());
但是使用这段代码,我得到了一个空值:
List<Path> fileNames = Files.list(configFilePath)
filter(file -> file.getFileName().endsWith(".txt"))
.map(Path::getFileName)
.sorted()
.collect(toList());
Path
API非常令人烦恼,不仅有像getFileName()
这样返回Path
而不是名称String
的方法,还提供了像endsWith(String)
这样语义与String.endsWith(String)
完全不同的方法。我不知道我有多少次被绊倒了。要点是,按照此答案建议更改您的代码或使用file.getFileName().toString().endsWith(".txt")
,并将其视为设计API时应避免的错误示例。 - Holger