java认证:关于FileFilter使用的一点心得

来源:java认证发布时间:2012-11-12 12:48:45java认证视频

  现在要求输入一个文件的目录,之后将里面所有的备份文件删除,备份文件都是以“.bak”或".BAK"结尾
  package TestFile;
  import java.io.File;
  import java.io.FileFilter;
  /**
  *
  * 用于过滤以.bak结尾或包含.bak的文件
  * 返回值的含义是 当包含该字符串时返回true
  */
  public class ListFilter implements FileFilter{
  @Override
  public boolean accept(File file) {
  //测试指定的文件(夹)是否应该包含在指定的列表中(就是测定作为过滤的条件是否满足)
  /*
  * 如果是目录的话,直接返回true 表示是满足条件的一情况
  */
  if(file.isDirectory()) return true;
  /*
  * 如果不是目录的话,通过判断在其名字里是否含有规定的字符,
  * 因为string的index方法在不满足条件(不含有指定的字符)是返回-1
  * 所以以此来确定是否满足条件
  */
  String name=file.getName();
  /*
  * int index=name.indexOf(".bak");
  * return index!=-1;
  * 这种方法不安全,可能会删除文件名中还含有.bak的文件,备份文件还可以用.BAK结尾
  */
  return name.endsWith(".bak")||name.endsWith(".BAK");
  }
  }
  使用此类
  package TestFile;
  import java.io.File;
  /**
  * @author Administrator
  * 涉及到递归调用
  */
  public class BakDelete{
  public static void main(String[] args){
  BakDelete bd=new BakDelete();
  bd.listBakFile(new File("E:/"));
  }
  public void listBakFile(File file){
  File[] fs=file.listFiles(new ListFilter());
  for(int i=0;i<fs.length;i++){
  if(fs[i].isFile()){
  System.out.println(fs[i].getAbsolutePath());//打印文件绝对路径
  fs[i].delete();
  }else{
  //System.out.println(fs[i].getAbsolutePath());
  listBakFile(fs[i]);
  }
  }
  //System.out.println(fs.length);
  }
  }
  更多优质资料尽在考试大论坛 考试大在线题库 java认证更多详细资料

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答