Получение файлов из других папок в Android - PullRequest
0 голосов
/ 29 марта 2012

Я хочу создать массив файлов определенных типов с расширением .txt, которые можно найти во всех папках Android.

Я немного не в курсе, мне нужно перебрать все папки, а затем создать список всех найденных элементов с именем файла ".txt".

У меня вопрос, какой метод мне нужен, чтобы начать сверху всех папок? Также мне нужен метод, чтобы открыть определенную папку (чтобы я мог перебрать метод FileNameFilter).

Кроме того, я не возражаю против каких-либо рекомендаций о том, как сделать такой метод.

public String getFile(int position){
    File root = Environment.getExternalStorageDirectory();//This is incorrect it just goes to it's current environment it's folder found for this application.
    FilenameFilter filter = new FilenameFilter() {

        public boolean accept(File dir, String filename) {
            // TODO Auto-generated method stub
            return !filename.endsWith(".txt");
        }

    };
    ArrayList<File> items = new ArrayList<File>(Arrays.asList(root.listFiles(filter)));
    String returned = items.get(position).toString();
    return returned;

1 Ответ

3 голосов
/ 29 марта 2012

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

Вы можете сделать что-то вроде

public void findAllFilesWithExtension( File dir, String extension, List<File> listFiles )   {
   List<File> listChildren = Arrays.asList(dir.listFiles());
   for( File child : listChildren ) {
      if( child.isDirectory() ) {
         findAllFilesWithExtension( child, extension, listFiles );
      } else if( child.getName().endsWith( extension ) ) {
        listFiles.add( child );
      } //else
   } //for
}//met

И сначала позвоните в корневой каталог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...