【发布时间】:2011-11-01 18:44:48
【问题描述】:
我正在寻找一种有效的方法来测试是否存在具有特定模式的文件名的文件。
使用通配符的示例:
- ????.*
- ???????.*
- *.png
- *.jpg
使用正则表达式的示例:
- [012]{4}.*
- [012]{7}.*
问题是我必须测试的目录包含多达 500.000 个文件。 我知道执行此类测试的唯一方法是使用 File 类的方法:
String[] list()
String[] list(FilenameFilter filter)
File[] listFiles()
File[] listFiles(FileFilter filter)
File[] listFiles(FilenameFilter filter)
问题在于它们基本上都是以相同的方式实现的:首先调用 list() 来获取所有可用文件,然后对其应用过滤器。
请想象一下,如果我们想将它应用于包含 500.000 个文件的文件夹会发生什么......
如果 Java 中有任何替代方法可以检索有关目录中文件的第一个匹配文件的文件名,而不必枚举所有文件?
如果 JNI 是唯一的选择 - 是否有一个库可以为六个主要平台(Linux、Windows 和 OSX 各 32 位和 64 位)提供预编译的二进制文件?
【问题讨论】:
-
我认为您对此无能为力。也许您可以随机访问文件?如果您只是在寻找与特定模式匹配的文件,这可能会产生更好的结果。
标签: java regex file find wildcard