您的位置:首页 > 其它

遍历Sd卡目录中所有子文件【可筛选特定类型文件】

2013-07-18 17:48 417 查看
import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.app.ListActivity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

/**
*
*遍历Sd卡目录中所有文件,使用listview显示,
*单击条目时,提示文件路径
*/
public class MainActivity extends ListActivity {
private SimpleAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
adapter=new SimpleAdapter(MainActivity.this, getdata(), android.R.layout.simple_list_item_1, new String[]{"name"}, new int[]{android.R.id.text1});
setListAdapter(adapter);
}
//提供listview数据
private List<HashMap<String, String>> getdata() {
List<HashMap<String, String>> data=new ArrayList<HashMap<String,String>>();
File file=Environment.getExternalStorageDirectory();//获得sdcard根目录
ArrayList<File> files=getFiles(file);//获得根目录下所有文件
//遍历将所有文件加入data中
for(File f:files){
HashMap<String, String> map=new HashMap<String, String>();
map.put("name", f.getName());
data.add(map);
}
return data;
}
//定义全局变量all_files保存所有文件
//定义文件过滤器,添加筛选条件
//定义工具类getFiles()获取传入值file的全部子文件
private ArrayList<File> all_files=new ArrayList<File>();
//	private FileFilter filter = new FileFilter() {//文件过滤器,此处目的是筛选出.mp3/.wav/.wma文件
//		@Override
//		public boolean accept(File file) {
//			return file.isDirectory() || file.getName().matches("^.*?\\.(mp3|wav|wma)$");
//		}
//	};
private ArrayList<File> getFiles(File file) {
//使用递归遍历所有子文件
File[] files=file.listFiles();
//		File[] files=file.listFiles(filter);//使用文件过滤器,筛选出满足条件的所有文件
for(File f:files){
if(f.isFile()){
all_files.add(f);
}else if(f.isDirectory()&&f.canRead()){
getFiles(f);
}
}
return all_files;
}
//选择条目,提示文件路径
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
String msg=all_files.get(position).getPath();
Toast.makeText(MainActivity.this, msg, 500).show();
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: