我必须从PDF文件目录中获取文件。我有问题,我没有一个字段来整合所有数据来查找文件。
以下是一个例子:
文件名:
Comp_20120619_170310_2_632128_FC_A_8_23903.pdf
文件名生成:
Comp_20120619_--------_2_632128_FC_A_8_23903.pdf
我没有'"--------"
字段来创建文件COMPLETE名称。
我正在尝试File.list
但我找不到正确的文件。
答案 0 :(得分:17)
您可以定义FilenameFilter以匹配文件名,如果文件名与您要查找的文件名匹配,则返回true。
File dir = new File("/path/to/pdfs");
File[] files = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.matches("Comp_20120619_[^_]*_2_632128_FC_A_8_23903.pdf");
}
});
listFiles()
方法返回一个File对象数组。这是有道理的,因为可能有多个文件与模式匹配(至少在理论上,尽管不一定在您的系统中)。
我使用正则表达式来匹配文件名,使用[^_]*
来匹配您不确定的部分。但是,如果文件名匹配,您可以使用任何将返回布尔值的函数。例如,您可以使用startsWith
和endsWith
代替正则表达式。
答案 1 :(得分:1)
list()
有什么问题?
File folder = new File("path/to/pdffilefolder");
String[] allFilesInThatFolder = folder.list();
// contains only files, no folders.
答案 2 :(得分:1)
可以使用WildcardFileFilter(org.apache.commons.io.filefilter)
代码看起来很简单:
FilenameFilter filenameFilter = new WildcardFileFilter("Comp_20120619_*_2_632128_FC_A_8_23903.pdf");
String[] pdfFileNames = yourDir.list(filenameFilter);
if(pdfFileNames != null ) {
for (String pdfName : pdfFileNames)
答案 3 :(得分:1)
希望它有效..
String[] pdfFiles= yourDir.listFiles(getFileNameFilterMachingWithFileName("Comp_20120619_"));
private FilenameFilter getFileNameFilterMachingWithFileName(final String
fileNameStart) {
return new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return (name.toUpperCase().startsWith(fileNameStart.toUpperCase()) && name.toUpperCase().endsWith(".PDF"));
}
};
}