我需要扫描Java中的特定文件夹,并能够返回特定类型的整数个文件(不仅基于扩展名,还基于命名约定。)例如,我想知道有多少JPG文件\ src文件夹中有一个简单的整数文件名(例如,1.JPG到30.JPG)。谁能指出我正确的方向? THX
答案 0 :(得分:10)
java.io.File.list(FilenameFilter)
是您正在寻找的方法。
答案 1 :(得分:1)
我有一个方法,它使用正则表达式模式来处理相当复杂的文件结构。可以使用类似的东西,虽然我确信它可以比我的例子更简洁(为安全而编辑)。
/**
* Get all non-directory filenames from a given foo/flat directory
*
* @param network
* @param typeRegex
* @param locationRegex
* @return
*/
public List<String> getFilteredFilenames(String network, String typeRegex, String locationRegex) {
String regex = null;
List<String> filenames = new ArrayList<String>();
String directory;
// Look at the something network
if (network.equalsIgnoreCase("foo")) {
// Get the foo files first
directory = this.pathname + "/" + "foo/filtered/flat";
File[] foofiles = getFilenames(directory);
// run the regex if need be.
if (locationRegex != null && typeRegex != null ) {
regex = typeRegex + "." + locationRegex;
//System.out.println(regex);
}
for (int i = 0; i < foofiles.length; i++) {
if (foofiles[i].isFile()) {
String file = foofiles[i].getName();
if (regex == null) {
filenames.add(file);
}
else {
if (file.matches(regex)) {
filenames.add(file);
}
}
}
}
}
return filenames;
}