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()方法得到這個目錄下所有的文件和目錄的名稱數(shù)組,list()方法,一種是沒有參數(shù),一種是實現(xiàn)FilenameFilter接口的參數(shù),例如要獲得一個指定目錄下的所有的java文件,就要使用第二種帶參數(shù)的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的一個匿名內(nèi)部類來實現(xiàn),例如:
public class Test{
//type:必須聲明為final類型,作為一個匿名內(nèi)部類,訪問的變量都必須聲明為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();
}
}
}
//基礎(chǔ)知識1:在一個java文件中,有且只能有一個公共類,即類的修飾符為public
//基礎(chǔ)知識2:接口中所定義的任何對象默認作用域都為public
//基礎(chǔ)知識3:Exception的命名空間為java.lang.Exception
/**--注意--**/
以上代碼都是在文本編輯器中寫的,可能會有些許紕漏
@zhumail6@gmail.com
文件名也可能是 "aaa.java.jpg" :)