2010-12-30 2 views

답변

24

Environment.getExternalStorageDirectory은 SDCARD에 해당하는 File을 제공합니다. 그렇다면 File 메서드를 사용해야합니다. 조언

File sdCardRoot = Environment.getExternalStorageDirectory(); 
File yourDir = new File(sdCardRoot, "yourpath"); 
for (File f : yourDir.listFiles()) { 
    if (f.isFile()) 
     String name = f.getName(); 
     // make something with the name 
} 

약간 참고 : 그런 일해야

위의 킷캣과에서, 이것은 READ_EXTERNAL_STORAGE 권한이 필요합니다.

+0

안녕하세요. – sajjoo

+0

'list()'와'listFiles()'두 메소드의 소스 코드를 확인 했습니까? 그들 사이에는 약간의 차이가 있습니다. diff가 무엇인지 알고 흥미 롭습니다. –

+0

@Martjin : 내부적으로'listFiles'는 list를 사용하여 파일 이름 목록을 만들고'File' 객체를 만듭니다. 그러나 OP가 파일 만 갖고 싶기 때문에'listFiles'를 사용하는 것이 더 좋았습니다. –

2
/** 
* Return list of files from path. <FileName, FilePath> 
* 
* @param path - The path to directory with images 
* @return Files name and path all files in a directory, that have ext = "jpeg", "jpg","png", "bmp", "gif" 
*/ 
private List<String> getListOfFiles(String path) { 

    File files = new File(path); 

    FileFilter filter = new FileFilter() { 

     private final List<String> exts = Arrays.asList("jpeg", "jpg", 
       "png", "bmp", "gif"); 

     @Override 
     public boolean accept(File pathname) { 
      String ext; 
      String path = pathname.getPath(); 
      ext = path.substring(path.lastIndexOf(".") + 1); 
      return exts.contains(ext); 
     } 
    }; 

    final File [] filesFound = files.listFiles(filter); 
    List<String> list = new ArrayList<String>(); 
    if (filesFound != null && filesFound.length > 0) { 
     for (File file : filesFound) { 
      list.add(file.getName()); 
     } 
    } 

    return list; 
} 

이렇게하면 폴더에있는 이미지의 목록을 얻을 수 있습니다. 모든 파일을 가져 오기 위해 코드를 수정할 수 있습니다.

0
ArrayList<String>nameList = new ArrayList<String>(); 
File yourDir = new File(Environment.getExternalStorageDirectory(), "/myFolder"); 
for (File f : yourDir.listFiles()) 
{ 
    if (f.isFile()) 
    { 
     nameList.add(f.getName); 
    } 

} 
0

당신이 다음이 코드를 사용 FOLDER의 특정 경로에서 모든 파일 및 폴더를 검색 할 경우, 나는 우리가 권한을 추가해야한다는 발견 안드로이드 5.0 롤리팝 당신에게

String path="/mnt/sdcard/dcim"; //lets its your path to a FOLDER 

String root_sd = Environment.getExternalStorageDirectory().toString(); 
File file = new File(path) ;  
File list[] = file.listFiles(); 
    for(File f:list) 
    { 
     filename.add(f.getName());//add new files name in the list 
    }    
1

도움이 될 것입니다 관리자에게 :

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

그렇지 않은 경우 sdcard에서 파일을 볼 수 없습니다. 이걸 찾으려면 1 시간이 걸릴거야!