Android开发之——FilenameFilter文件过滤器

来源:互联网 发布:自考培训机构 知乎 编辑:程序博客网 时间:2024/06/08 04:34
    

一、FilenameFilter介绍


java.io.FilenameFilter是文件名过滤器,用来过滤不符合规格的文件名,并返回合格的文件;

一般地:

(1)String[] fs = f.list();

(2)File[] fs = f.listFiles();

这两个方法返回f下的所有文件或目录;

FilenameFilter用来把符合要求的文件或目录返回;

因此可以调用:

(1)String []fs = f.list(FilenameFilter filter);;

(2)File[]fs = f.listFiles(FilenameFilter filter);


二、文件名过滤器一般用法


1.实现FilenameFilter接口;

2.实现boolean accept(File dir,String name);   //dir表示文件的当前目录,name表示文件名;

class MyFilter implements FilenameFilter{

private String type;            //type为需要过滤的条件,比如如果type=".jpg",则只能返回后缀为jpg的文件

public MyFilter(String type){

this.type = type;

}

public boolean accept(File dir,String name){           //返回true的文件则合格

}

}


三、实例    


要求:返回当前目录下所有以.mp3结尾的文件;

//过滤所有以.mp3结尾的文件class MusicFilter implements FilenameFilter {public boolean accept(File dir, String name) {return (name.endsWith(".mp3"));}

然后显示在某个列表内:

//显示音乐文件列表public void musicList() {//取得需要遍历的文件目录File home = new File("/sdcard/");List<Map<String, String>> list = new ArrayList<Map<String, String>>();//遍历文件目录if (home.listFiles(new MusicFilter()).length > 0) {for (File file : home.listFiles(new MusicFilter())) {Map<String, String> map = new HashMap<String, String>();System.out.println("musicName is: " + file.getName());map.put("musicName", file.getName());list.add(map);}sa = new SimpleAdapter(SetAlarm.this, list, R.layout.musicitems,new String[] { "musicName" }, new int[] { R.id.musicName });listV.setAdapter(sa);}}}



0 0