Как выбрать все файлы из папок и подпапок в Android?

Возможный дубликат:
Рекурсивный список файлов в Java

Я создал одну папку с именем SlideShow в SDCard. Внутри этой папки я создал две папки, а именно folder1 и folder2. Эти две папки далее разделены на две подпапки каждая. Я сохраняю некоторые изображения из галереи в эти подпапки.

Кто-нибудь подскажет, как вывести список всех изображений из папки SlideShow, включая папки и подпапки??

2 ответа

Я думаю, что вы можете использовать рекурсивную функцию, как это: вы можете получить помощь через этот пример

public List<String> images=new ArrayList<String>();        

public recursiveFunction(File dirPath) {
    File f = new File(dirPath);
    File[] files = f.listFiles();

    for(int i=0;i,**files.length - 1**;i++)
    {
        if(files[position].isFile())
        {
          int mid= files[position].getName().lastIndexOf(".");
          String ext=files[position].getName().substring(mid+1,files[position].getName().length()); 

          if(   ext.equalsIgnoreCase("jpg")
             || ext.equalsIgnoreCase("png")
             || ext.equalsIgnoreCase("jpeg")
             || ext.equalsIgnoreCase("gif"))
          {
            images.add(files[position].getAbsoluteFile();
          }
        }
        else 
          recursiveFunction(files[position].getAbsoluteFile());
    }
  }

в списке изображений у вас есть все ваши изображения.

Попробуйте с помощью следующего кода получить все изображения из папки SlideShow и ее подпапки

public static ArrayList<String> getPathOfAllImages(Activity activity) {
        trimCache();
        String absolutePathOfImage = null;
        String nameOfFile = null;
        String absolutePathOfFileWithoutFileName = null;
        Uri uri;
        Cursor cursor;
        int column_index;
        int column_displayname;
        int lastIndex;
        // absolutePathOfImages.clear();
        ArrayList<String> absolutePathOfImageList = new ArrayList<String>();
        if (absolutePathOfImageList.isEmpty()) {
            uri = android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

            String[] projection = { MediaColumns.DATA,
                    MediaColumns.DISPLAY_NAME };

            cursor = activity.managedQuery(uri, projection, null, null, null);
            column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA);

            column_displayname = cursor
                    .getColumnIndexOrThrow(MediaColumns.DISPLAY_NAME);

            // cursor.moveToFirst();
            while (cursor.moveToNext()) {
                // for(int i=0; i<cursor.getColumnCount();i++){
                // Log.i(TAG,cursor.getColumnName(i)+".....Data Present ...."+cursor.getString(i));
                // }
                // Log.i(TAG,"=====================================");

                absolutePathOfImage = cursor.getString(column_index);
                nameOfFile = cursor.getString(column_displayname);

                lastIndex = absolutePathOfImage.lastIndexOf(nameOfFile);

                lastIndex = lastIndex >= 0 ? lastIndex
                        : nameOfFile.length() - 1;

                absolutePathOfFileWithoutFileName = absolutePathOfImage
                        .substring(0, lastIndex);

                if (!((absolutePathOfFileWithoutFileName.equals(Environment
                        .getExternalStorageDirectory() + "/SlideShow/")))) {
                    if (absolutePathOfImage != null) {
                        absolutePathOfImageList.add(absolutePathOfImage);
                    }
                }
            }

        }
        // Log.i(TAG,"........Detected images for Grid....."
        // + absolutePathOfImageList);
        return absolutePathOfImageList;
    }
Другие вопросы по тегам