List all the files from all the folder in a single list List all the files from all the folder in a single list android android

List all the files from all the folder in a single list


Try this:

 ..... List<File> files = getListFiles(new File("YOUR ROOT"));  .... private List<File> getListFiles(File parentDir) {    ArrayList<File> inFiles = new ArrayList<File>();    File[] files = parentDir.listFiles();    for (File file : files) {        if (file.isDirectory()) {            inFiles.addAll(getListFiles(file));        } else {            if(file.getName().endsWith(".csv")){                inFiles.add(file);            }        }    }    return inFiles;}

or variant without recursion:

private List<File> getListFiles2(File parentDir) {    List<File> inFiles = new ArrayList<>();    Queue<File> files = new LinkedList<>();    files.addAll(Arrays.asList(parentDir.listFiles()));    while (!files.isEmpty()) {        File file = files.remove();        if (file.isDirectory()) {            files.addAll(Arrays.asList(file.listFiles()));        } else if (file.getName().endsWith(".csv")) {            inFiles.add(file);        }    }    return inFiles;}


I've modified Vyacheslav's solution because I needed only file names inside the directory. Maybe it'll be helpfull for someone.

...List<String> files = getList(new File("YOUR ROOT")); ...private List<String> getList(File parentDir, String pathToParentDir) {    ArrayList<String> inFiles = new ArrayList<String>();    String[] fileNames = parentDir.list();    for (String fileName : fileNames) {        if (fileName.toLowerCase().endsWith(".txt") || fileName.toLowerCase().endsWith(".rtf") || fileName.toLowerCase().endsWith(".txd")) {            inFiles.add(pathToParentDir + fileName);        } else {            File file = new File(parentDir.getPath() + "/" + fileName);            if (file.isDirectory()) {                inFiles.addAll(getList(file, pathToParentDir + fileName + "/"));            }        }    }    return inFiles;}


You can use following method,

private int readLogList( String filePath ){    File directory = Environment.getExternalStorageDirectory();    File folder = new File( directory + ConstantCodes.FILE_SEPARATOR + filePath );    if ( !folder.exists() )    {        return 0;    }    return  folder.list().length;}