Java用尾递归遍历目录
来源:互联网 发布:java cms 开源 编辑:程序博客网 时间:2024/05/29 02:56
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; }}