java--FilenameFilter文件過濾器

轉載自:http://www.cnblogs.com/jico/archive/2011/01/04/1925667.html

作者:萵筍炒肉

 

java--FilenameFilter文件過濾器

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

 

/**--注意--**/

以上代碼都是在文本編輯器中寫的,可能會有些許紕漏

發佈了9 篇原創文章 · 獲贊 2 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章