我正在编写一种方法来从文件夹和子文件夹中获取特定文件类型,如pdf或txt,但我不能解决这个问题。这是我的代码
// .............list file
File directory = new File(directoryName);
// get all the files from a directory
File[] fList = directory.listFiles();
for (File file : fList) {
if (file.isFile()) {
System.out.println(file.getAbsolutePath());
} else if (file.isDirectory()) {
listf(file.getAbsolutePath());
}
}
我当前的方法列出了所有文件,但我需要特定的文件
答案 0 :(得分:9)
对于不需要通过子目录递归的过滤列表,您可以这样做:
directory.listFiles(new FilenameFilter() {
boolean accept(File dir, String name) {
return name.endsWith(".pdf");
}});
为了提高效率,您可以提前创建FilenameFilter,而不是每次调用。
在这种情况下,因为您还要扫描子文件夹,所以无需过滤文件,因为您仍需要检查子文件夹。事实上,你几乎就在那里:
File directory = new File(directoryName);
// get all the files from a directory
File[] fList = directory.listFiles();
for (File file : fList) {
if (file.isFile()) {
if (file.getName().endsWith(".pdf")) {
System.out.println(file.getAbsolutePath());
}
} else if (file.isDirectory()) {
listf(file.getAbsolutePath());
}
}
答案 1 :(得分:6)
if(file.getName().endsWith(".pdf")) {
//it is a .pdf file!
}
/ <强> * ** 强> /
答案 2 :(得分:2)
尝试在您的函数中使用FilenameFilter接口 http://docs.oracle.com/javase/6/docs/api/java/io/FilenameFilter.html
http://www.mkyong.com/java/how-to-find-files-with-certain-extension-only/ - 对于具有扩展过滤器的代码
答案 3 :(得分:1)
示例:
File[] fList = directory.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
return file.getName().endSwith(".pdf");
}
});
答案 4 :(得分:0)
您可以使用apache fileUtils类
String[] exte= {"xml","properties"};
Collection<File> files = FileUtils.listFiles(new File("d:\\workspace"), exte, true);
for(File file: files){
System.out.println(file.getAbsolutePath());
}
答案 5 :(得分:0)