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

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();
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值