public class TraverseFileDirectoryActivity extends Activity {
private static final String TRAVERSE_DIRECTORY = "/sdcard/";
private List<String> mFileList = new ArrayList<String>();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Begin to traverse directory
File file = new File(TRAVERSE_DIRECTORY);
List<File> fileList = new ArrayList<File>();
fileList.add(file);
getFilesRecursively(fileList);
// Print out the result
for(int i = 0; i < mFileList.size(); i++){
System.out.println(mFileList.get(i));
}
}
private void getFilesRecursively(List<File> fileList){
List<File> directoryList = new ArrayList<File>();
for (int i = 0; i < fileList.size(); i++){
if (fileList.get(i).isDirectory()){
directoryList.add(fileList.get(i));
}
else{
if (fileList.get(i).getName().toLowerCase().endsWith(".vcf")
&& fileList.get(i).canRead()){
mFileList.add(fileList.get(i).getName());
}
}
}
if (directoryList.size() != 0){
getFilesRecursively(listFiles(directoryList));
}
}
private List<File> listFiles(List<File> directoryList){
List<File> fileList = new ArrayList<File>();
File[] files = null;
for (int i = 0; i < directoryList.size(); i++){
files = directoryList.get(i).listFiles();
if (files != null){
fileList.addAll(Arrays.asList(files));
}
}
return fileList;
}
}