File f = new File("abstract_pathnames");
ArrayList<File> files = new ArrayList<File> (Arrays.asList(f.listFiles()));
How can I get a file with specific extension from this list?
答案 0 :(得分:2)
您可以使用FilenameFilter
过滤文件。文件名传递一个String,以防止在列出文件时创建大量File
个对象。
此类自JDK 1.0以来就存在。
Java 7及更低示例:
List<File> files = new ArrayList<File>(Arrays.asList(f.listFiles(
new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".ext");
}
}
)));
Java 8示例:
List<File> files = new ArrayList<File>(Arrays.asList(f.listFiles(
(File dir, String name) -> name.endsWith(".ext")
)));
过滤多个扩展程序时,会变得更难。我们首先将允许的扩展名存储在Set&lt;&gt;中,然后使用其contains()方法来比较每个条目。
Set<String> allowed = new HashSet<>();
allowed.add("txt");
allowed.add("exe");
allowed.add("sh");
然后我们在文件过滤器中分割点并比较最后一部分:
List<File> files = new ArrayList<File>(Arrays.asList(f.listFiles(
new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
String[] split = name.split("\.");
if(split.length == 1)
return allowed.contains("");
return allowed.contains(split[split.length - 1]);
}
}
)));
答案 1 :(得分:1)
您可以使用以下代码(Java 8)来获取目录的所有pdf
个文件:
File dir = new File("/myDirectory");
File[] files = dir.listFiles(f -> f.getName().endsWith(".pdf"));