在Android开发过程中,有时需要扫描SD卡下的所有文件,需要过滤掉文件夹。
这里,用递归的思想进行:
1.传入文件夹名;
2.扫描文件夹下文件;
3.如果是文件,存入list显示;如果是文件夹,重复1
代码如下:
public List<Map<String, Object>> getList() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
String sDStateString = Environment.getExternalStorageState();
if (sDStateString.equals(Environment.MEDIA_MOUNTED)) {
File SDFile = Environment.getExternalStorageDirectory();
File sdPath = new File(SDFile.getAbsolutePath());
list = getFile(sdPath);
}
return list;
}
public List <Map<String, Object>> getFile(File pathFile){
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
if(pathFile.canRead()&&pathFile.listFiles().length>0){
for (File aboveFile : pathFile.listFiles()) {
if(aboveFile.isDirectory()){
Log.i("Folder",aboveFile.getParent() +"/" +aboveFile.getName()+"is folder");
List<Map<String, Object>> list1 = getFile(aboveFile);
for(Map<String, Object> map1 : list1 ){
list.add(map1);
}
}
else {
Map<String, Object> map = new HashMap<String, Object>();
map.put("text_content", aboveFile.getParent() +"/" + aboveFile.getName());
list.add(map);
Log.i("File","name-->" +aboveFile.getParent() +"/" + aboveFile.getName());
}
}
}
return list;
}
具体实现( 下载)