我正在尝试实例化一个 File 变量,但只知道部分文件名。 IE。我知道文件名以“pass_231_”开头,但不知道其余的。这可能吗?
最佳答案
如果您知道它在哪个目录中,那么是的。您可以使用 FileFilter
:
final String prefix = "pass_231_"
File dir = ... ;
File[] candidates = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().startsWith(prefix);
}
});
// candidates will contain all files starting with "pass_231_"
如果需要递归搜索(包括子文件夹),可以这样做:
String prefix = "pass_231_";
File dir = ... ;
List<File> candidates = new ArrayList<File>();
searchRecursively(dir, prefix, candidates);
// candidates will contain all files starting with "pass_231_"
然后 searchRecursively
看起来像这样:
public static void searchRecursively(File dir, final String prefix, List<File> candidates) {
File[] matches = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().startsWith(prefix);
}
});
candidates.addAll(Arrays.asList(matches));
File[] subdirs = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isDirectory();
}
});
for (File subdir : subdirs) {
searchRecursively(subdir, prefix, candidates);
}
}
关于java - 如何访问仅包含部分文件名的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12901183/