Intereting Posts

Список всех файлов из всей папки в одном списке

Привет, я ищу решение для списка всех файлов с корневого / Android-устройства.

Предположим, что в корневом каталоге есть 3 папки, но я хочу отобразить все файлы во всей этой папке в одном списке.

Теперь, если я использую

File f=new File("/sdcard"); 

Затем он будет перечислять все файлы только из папки sdcard. И если я буду использовать

  File f=new File("/download"); 

Затем он перечислит все файлы из папки загрузки только. И если я буду использовать

  File f=new File("/"); 

Затем он будет перечислять только файлы корневого кортежа … не файлы внутри / sdcard или / download ..

Итак, какие шаги я должен выполнить, чтобы перечислить все файлы с фильтром, чтобы перечислять только .csv-файлы из всей папки внутри root.

Благодаря..

Solutions Collecting From Web of "Список всех файлов из всей папки в одном списке"

Попробуй это:

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

Или вариант без рекурсии:

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

Я изменил решение Вячеслава, потому что мне нужны только имена файлов внутри каталога. Может быть, это будет полезно для кого-то.

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

Вы можете использовать следующий метод,

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