实现遍历sd卡的所有文件夹和文件,来寻找特定格式的文件,以列表的形式展示;
简单的代码贴出来,大家一起学习。
主要是利用这个listFiles();方法。
public class FileActivity extends Activity{
private ListView lv;
private ArrayList<File> sortedList; //用于储存遍历结果的List
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_file);
lv = (ListView)findViewById(R.id.listView1);
sortedList = new ArrayList<File>();
File file = new File("/mnt/sdcard"); //从SD的根目录开始
File[] files = file.listFiles(); //本方法返回该文件夹展开后的所有文件的数组
findXFormat(files);
lv.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_expandable_list_item_1,getData()));//设置表格内容
}
private void findXFormat(File[] mfiles) {
for(int i = 0;i < mfiles.length;i++){//遍历展开后的文件夹的文件
File temp = mfiles[i];
if(temp.isDirectory()){//如果是文件夹,继续展开
File[] filess = temp.listFiles();
findXFormat(filess);//用递归递归
}else if(isXFormat(temp)){
sortedList.add(temp);//符合格式的添加入列
}
}
}
private boolean isXFormat(File temp) {
int start = temp.getName().lastIndexOf(".");
int end = temp.getName().length();
if (start != -1) {
String indexName = temp.getName().substring(start + 1, end);
if (indexName.equals("pdf")){
return true;
}
}
return false;
}
private List<String> getData() {
List<String> str = new ArrayList<String>();
for(int i = 0;i < sortedList.size();i++){
str.add(sortedList.get(i).getName());
}
return str;
}
}