在做Mp3音乐播放器的时候,需要经常用到读取文件的操作,看过网上一些人写的读取方法,做个总结,部分代码有相似之处。
一、通过过滤器的方式过滤文件
public class MusicFilter implements FilenameFilter{
public boolean accept(File dir , String name){
return (name.endsWith(".mp3"));
}
}
public void musicList(){
mMusicList.clear();//先清除列表里之前的信息,mMusicList是自定义的list
File home=new File(MUSIC_PATH);
if(home.listFiles(new MusicFilter()).length>0){
for(File file :home.listFiles(new MusicFileter())){
mMusicList.add(file.getName()); //把歌曲名字添加到mMusicList列表中
}
}
}
二、通过递归,判断文件后缀名的方法
public void Search(File file ,String[] ext){
if(file!=null){
if(file.isDirectory()){//如果是文件夹
File[] listFile=file.listFiles();//列出所有的文件放在listFile这个File类型数组中
if(listFile!=null){
for(int i=0;i<listFile.length();i++){
search(listFile[i], ext);//递归,直到把所有文件遍历完
}
}
}else{//否则就是文件
String fileName=file.getAbsolutePath();//返回抽象路径名的绝对路径名字符串
String name=file.getName();//获得文件的名称
for(int i=0;i<ext.length;i++){
if(fileName.endsWith(ext[i])){//判断文件后缀名是否包含我们定义的格式
list.add(name);
break;
}
}
}
}
}
调用的时候先声明file和String[] ext
private String[] ext={".mp3", ".awv"}//定义我们要查找的文件格式
File file=Environment.getExternalStorageDirectory();//获得SD卡的路