zoukankan      html  css  js  c++  java
  • java文件过滤器

    java中有一个FilenameFilter的接口,能够过滤得到指定类型的文件或者目录,其中必须重写accept(File file,String path)方法

    public class DirFilter implements FilenameFilter{

      private String type;

      public DirFilter(String tp){

        this.type=tp;

      }

      public boolean accept(File fl,String path) throws Exception{

         File file=new File(path);

         String filename=file.getName();

         return filename.indexOf(type)!=-1;

      }

    }

    具体应用方法:File假如是一个Directory,可以通过list()方法得到这个目录下所有的文件和目录的名称数组,list()方法,一种是没有参数,一种是实现FilenameFilter接口的参数,例如要获得一个指定目录下的所有的java文件,就要使用第二种带参数的list()方法

    public class Test{

      public static void main(String[] args){

        try{

          //指定目录(“.”表示当前目录)

          File dir=new File(".");

          String[] names;

          //获得所有java文件

          DirFilter filter=new DirFilter(".java");

          names=dir.list(filter);

          //打印所有java文件名称

          for(int i=0;i<names.length;i++){

            System.out.println("i:"+i+" name:"+names[i]);

          }

        }catch(Exception e){

          e.printStackTrace();

        }

      }

    }

    其中这里还可以将DirFilter类作为Test的一个匿名内部类来实现,例如:

    public class Test{

      //type:必须声明为final类型,作为一个匿名内部类,访问的变量都必须声明为final类型

      public static FilenameFilter filter(final String type) throws Exception{

        return new FilenameFilter(){

          public boolean accept(File file,Stirng path){

            String filename=new File(path).getName();

            return filename.indexOf(type)!=-1;

            } 

          };   

      }

      public static void main(String[] args){

        try{    

          File file=new File(".");

          String names[];

          names=file.list(filter(".java");

          for(int i=0;i<names.length;i++){

            System.out.println("i:"+i+" filename:"+names[i]);

          }

        catch(Exception e){

          e.printStackTrace();

        }

      }  

    }

    //基础知识1:在一个java文件中,有且只能有一个公共类,即类的修饰符为public

    //基础知识2:接口中所定义的任何对象默认作用域都为public

    //基础知识3:Exception的命名空间为java.lang.Exception

  • 相关阅读:
    重写System.IO.MemoryStream类, 实现LumiSoft.Net.POP3.Client单封邮件的下载进度显示
    获取页面来源URL ,源页面URL,Request.UrlReferrer为空的问题
    JavaScript BOM 随笔谈
    Android 端 博客园闪存——alpha版
    除余取模的算术变化特点,模的变化特点
    EF Code First 更新部分字段时 未更新字段的验证问题
    Android 端闪存 应用——alpha 2.0 版
    简化C#版Junit
    利用 Vs2012 编译MSOpenTech/Redis ——以服务方式运行Redis
    Android requires compiler compliance level 5.0. Please fix project properties.错误
  • 原文地址:https://www.cnblogs.com/lijia0511/p/4975953.html
Copyright © 2011-2022 走看看