IO流-FilenameFilter接口--文件过滤器的使用---筛选特定文件

来源:互联网 发布:超市商品条形码数据库 编辑:程序博客网 时间:2024/05/09 11:18

FilenameFilter接口:

                    实现此接口的类实例可用于过滤器文件名

此接口中一个唯一的方法:实现他的类必须实现此方法来定义过滤规则

方法摘要 booleanaccept(File dir,String name)
          测试指定文件是否应该包含在某一文件列表中。


boolean accept(File dir,               String name)
测试指定文件是否应该包含在某一文件列表中。
参数:
dir - 被找到的文件所在的目录。
name - 文件的名称。
返回:
当且仅当该名称应该包含在文件列表中时返回 true;否则返回 false
一个过滤器的例子:


package cn.itheima.cway.IO;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.FilenameFilter;import java.io.IOException;import java.util.ArrayList;import java.util.List;public class Test {/** * 需求:将指定目录下的所有.java文件的绝对路径输出到一个文本文件中 * 思路: * 1、必须进行深度遍历 * 2、必须有过滤器,在遍历的过程中进行遍历,将符合条件的内容存入容器中 * 3、对容器中内容进行遍历,并将绝对路径存入到文件中 * @param args * @throws IOException  */public static void main(String[] args) throws IOException {//创建一个需要遍历的目录File dir=new File("F:\\java");//创建一个文件名过滤器的匿名内部类,用于过滤.class文件FilenameFilter filter=new FilenameFilter(){ public boolean accept(File dir, String name) {  return name.endsWith(".java");}};//创建一个list集合,用于临时存放目录下所有.class文件List<File> list=new ArrayList<File>();//调用getFiles方法,方法的作用:遍历指定目录dir下面满足filter过滤器规则的文件,并存入到list集合中getFiles(dir,filter,list);//创建一个目的文件,用于存放满足过滤器条件的文件的绝对路径File dec=new File("f:\\s\\1.txt");//如果文件不存在,则创建if(!dec.exists())dec.createNewFile();//调用write2File方法,方法的作用是:将list集合中的内容写入到目标文件中write2File(list,dec); }/** * 对指定目录中的内容进行深度遍历,并按照指定的过滤器进行过滤 * 将过滤后的内容存入到指定容器List中 * @param dir * @param filter * @param list */private static void getFiles(File dir,FilenameFilter filter,List list) {//获取到指定目录dir下面所有的文件列表File[] files=dir.listFiles();//用for增强循环遍历filesfor(File file:files){//判断是否是目录,如果是目录则递归调用该方法:getFiles()if(file.isDirectory()){getFiles(file,filter,list); }else{//如果不是目录且满足过滤器条件的话则将文件对象存入到list集合中 if(filter.accept(dir, file.getName())) list.add(file);}}  }/** * 将list集合中的内容的决定路径写入到文件 * @param list * @param desFile * @throws IOException */private static void write2File(List<File> list,File desFile) throws IOException  { BufferedWriter bw=null;try {//创建一个文件字符输出流bw=new BufferedWriter(new FileWriter(desFile));//遍历list集合(File类型)for(File file:list){//将文件的决定路径写入文件desFile中bw.write(file.getAbsolutePath());//写入一个换行符bw.newLine();//刷新缓存,保证内容被写入文件bw.flush();}} finally{if(bw!=null){try {bw.close();} catch (IOException e) { throw new RuntimeException("关闭失败");}}}}}


0 0
原创粉丝点击