一、FilenameFilter介绍
Java.io.FilenameFilter是文件名过滤器,用来过滤不符合规格的文件名,并返回合格的文件;
二、文件名过滤器一般用法
1.实现FilenameFilter接口;
2.实现boolean accept(File dir,String name); //dir表示文件的当前目录,name表示文件名;
class MyFilter implements FilenameFilter{
private String type; //type为需要过滤的条件,比如如果type=".jpg",则只能返回后缀为jpg的文件
public MyFilter(String type){
this.type = type;
}
public boolean accept(File dir,String name){ //返回true的文件则合格
}
}
三、实例
要求:返回当前目录下所有以.java结尾的文件;
package tq.io;
import java.io.File;
import java.io.FilenameFilter;
/**
* 操作目录
* mkdir() 创建目录,必须确保父目录存在,如果不存在,创建失败
* mkdirs() 创建目录,如果父目录不存在,一同创建
* list() 文件|目录名字符串形式
* @author beibei
*
*/
public class IoFile2 {
public static void main(String[] args) {
test2();
}
//子目录|文件名 && File对象
public static void test2(){
String path = "C:/mywork/allFile";
File src = new File(path);//文件夹
if(src.isDirectory()){ //存在并且为目录
//子目录|文件名
String[] subNames = src.list();
for(String subName:subNames){
//System.out.println(subName);
}
//File对象
File[] subFiles = src.listFiles();
for(File subFile:subFiles){
//System.out.println(subFile.getAbsolutePath());
}
//命令设计模式
subFiles = src.listFiles(new FilenameFilter() {
//dir代表src
public boolean accept(File dir, String name) {
//System.out.println(dir.getName());
//System.out.println(dir.getAbsolutePath());
return new File(dir,name).isFile()&&name.endsWith(".java");
}
});
for(File subFile:subFiles){
System.out.println(subFile.getAbsolutePath());
}
}
}
public static void test1(){
String path = "C:/mywork/allFile/2.jpg";
File src = new File(path);
src.mkdir(); //创建目录,必须确保父目录存在,如果不存在,创建失败
src.mkdirs(); //创建目录,如果父目录不存在,一同创建
}
}