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