java--FilenameFilter檔案過濾器

hyeveryone發表於2011-11-18

轉載自: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

 

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

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

相關文章