2011-12-13 5 views
0

가능한 중복은 :
Recursively list files in Java안드로이드의 폴더와 하위 폴더에서 모든 파일을 선택하는 방법은 무엇입니까?

나는 SDCARD에서 슬라이드 쇼라는 이름의 폴더를 하나 만들었습니다. 이 폴더 안에는 folder1과 folder2라는 두 개의 폴더가 생성되었습니다. 이 두 폴더는 각각 두 개의 하위 폴더로 나뉩니다. 갤러리의 일부 이미지를이 하위 폴더에 저장합니다.

누구나 폴더와 하위 폴더를 포함하여 SlideShow 폴더의 모든 이미지를 나열하는 방법을 제안합니다.

답변

0

나는이 같은 recrusive 기능을 사용할 수 있다고 생각합니다 모든 슬라이드 쇼 폴더에서 이미지와 하위 폴더

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

슬라이드 쇼 폴더의 파일 만 필요하며 다른 미디어 파일은 필요하지 않습니다. –

1

를 얻기 위해 다음 코드를보십시오 : 당신이 취할 수있는이 예제를 통해 도움을

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

이미지 목록에 모든 이미지가 있습니다.

관련 문제