一、只要该目录下.java文件
package FileFilter;
import java.io.File;
public class FileFilterDemo1 {
//需求:只要该目录下.java文件
public static void main(String[] args){
File dir = new File("E:\\IdeaProjects\\spring-2\\src\\autowire");
File[] files = dir.listFiles();
for (File f:files) {
if(f.getName().endsWith(".java")){
System.out.println(f.getName());
}
}
}
}
二、用过滤器获取.java文件
获取.java的过滤器
package FileFilter;
import java.io.File;
public class FileFilterDemo2 {
//用过滤器获取.java文件
public static void main(String[] args){
File dir = new File("E:\\IdeaProjects\\spring-2\\src\\autowire");
File[] files = dir.listFiles(new FileNameFilterByJava());
/**
* listFiles源码
* public File[] listFiles(FilenameFilter filter) {
* String ss[] = list(); //file调用list()方法获取所有文件名数组
* if (ss == null) return null; //健壮性判断 数组为空就返回
* ArrayList<File> files = new ArrayList<>();
* for (String s : ss) //遍历文件名
* if ((filter == null) || filter.accept(this, s)) //对名称进行过滤器的判断。将当前目录this(即dir对象)和名字s传给过滤器accept方法
* files.add(new File(s, this)); //符合过滤器条件的加入list中(将目录和文件名称封装成File对象添加进list)
* return files.toArray(new File[files.size()]); //list转数组 为啥?不需要增删操作
* }
*/
for (File f:files) {
System.out.println(f.getName());
}
}
}
package FileFilter;
import java.io.File;
import java.io.FilenameFilter;
//获取.java的过滤器
public class FileNameFilterByJava implements FilenameFilter {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".java");
}
}
三、过滤器获取目录下指定类型文件
根据构造函数不同的过滤器
package FileFilter;
import java.io.File;
public class FileFilterDemo3 {
//过滤器获取目录下指定类型文件
public static void main(String[] args) {
File dir = new File("E:\\IdeaProjects\\spring-2\\src\\autowire");
File[] files = dir.listFiles(new FileNameFilterByAny(".jpg")); //改变过滤器构造函数传入的字符串达到目的
for (File f:files) {
System.out.println(f.getName());
}
}
}
package FileFilter;
import java.io.File;
import java.io.FilenameFilter;
public class FileNameFilterByAny implements FilenameFilter {
private String any;
public FileNameFilterByAny(String any) {
this.any = any;
}
@Override
public boolean accept(File dir, String name) {
return name.endsWith(any);
}
}