我应该获取目录中包含的文件列表。
我所做的是:
File file = new File(PATH);
for (File index:file.listFiles)
System.out.println(index.toString());
问题是,这样做时我还会打印一些我不应该看到的文件,例如临时文件。
在我的测试目录中,我必须文件:ciao和test,但是当我运行代码时,我看到ciao, ciao~、test~,以及其他内容(如果我修改文件)(我想它们是缓冲文件)。
那么,我怎样才能只获取true文件,就像我正在浏览我的文件系统一样?
最佳答案
如果您只想列出属性(包括名称)遵守一组条件的文件,则需要使用另一个版本的 .listFiles()
,它采用 FileFilter
作为参数。该接口(interface)有一个唯一的 accept()
方法,如果可以列出文件,该方法将返回 true。
这个简单的示例将过滤掉名称以 ~
结尾的文件:
file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return !pathname.getName().endsWith("~");
}
})
如果您的FileFilter
比上面的更复杂,请考虑将其外部化为一个变量(private static final
如果过滤器永远不会改变)。
关于Java 和文件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14267362/