原文連結

在Java里,File类有个listFiles方法可以得到指定目录里的所有文件列表,并返回一个File数组。有时我们只需要某些指定类型的文件,比如说jpg图片,listFiles可以通过传入FilenameFilter参数来过滤文件。
FilenameFilter是一个接口,不能直接实例化,所以要先写个类来继承它:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class ImageFilter implements FilenameFilter{
	 public boolean isJpg(String filename){    
		    if (filename.toLowerCase().endsWith(".jpg")){   
		    	//把文件转成小写后看其后缀是否为.jpg
		      return true;    
		    }else{    
		      return false;    
		    }    
		  }  
 
	@Override
	public boolean accept(File dir, String filename) {
		// TODO Auto-generated method stub
		return isJpg(filename);
		//覆写accept方法
	}
}

接下来,listFiles方法传入ImageFilter的实例:

1
2
File f = new File("/sdcard/");
File[] list=f.listFiles(new ImageFilter());

这样,list这个数组里只有jpg图片了。

 

 

補充也可在Filter的accept Method中增加參數dir 以利判斷檔案大小,類似此寫法:

 

public boolean accept(File dir, String fileNmae) {
      System.out.println("FileDetectFilter : dir = " + dir + ", fileNmae=" + fileNmae);
if (!fileNmae.toLowerCase().endsWith(".jpg"))  //判斷檔名結尾是否為jpg
       return false;
if (!fileNmae.startsWith("Test"))                        //判斷檔名開頭是否為Test
       return false;
File f = new File(dir, fileNmae);
if (f.length() >= (10*1024*1024))                     //判斷檔案是否超過10MB
       return true;
else
       return false;
}

 

創作者介紹
創作者 Bear-小小工程師學習筆記 的頭像
carefree55

Bear-小小工程師學習筆記

carefree55 發表在 痞客邦 留言(0) 人氣( 389 )