2010-12-30 27 views
12


tôi có một thư mục trong thẻ sd chứa nhiều tệp. bây giờ tôi cần lấy tên của các tệp đó. ai cũng có thể có bất kỳ ý tưởng làm thế nào để có được tên tập tin được lưu trữ trong thẻ sd?cách lấy tên tệp được lưu trữ trong thẻ sd trong android

mọi trợ giúp sẽ được đánh giá cao. cảm ơn rất nhiều.

Trả lời

24

Environment.getExternalStorageDirectory sẽ cấp cho bạn File tương ứng với SDCARD. Sau đó, bạn sẽ chỉ phải sử dụng phương thức File.

Đó nên là một cái gì đó như thế:

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 
} 

Một lưu ý nhỏ của lời khuyên: từ KitKat trở lên, điều này đòi hỏi sự cho phép READ_EXTERNAL_STORAGE.

+0

xin cảm ơn rất nhiều. – sajjoo

+0

Bạn đã kiểm tra mã nguồn của hai phương thức 'list()' và 'listFiles()' chưa? Có một sự khác biệt nhỏ giữa chúng. Thú vị khi biết diff là gì. –

+0

@Martjin: nội bộ, 'listFiles' sử dụng danh sách để tạo danh sách tên tệp và tạo đối tượng' Tệp'. Nhưng vì OP muốn chỉ có các tệp, tôi thích sử dụng 'listFiles' hơn. –

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

Điều này sẽ cung cấp cho bạn danh sách hình ảnh trong một thư mục. Bạn có thể sửa đổi mã để nhận tất cả các tệp.

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

Nếu bạn muốn lấy tất cả các file và thư mục từ một con đường cụ thể của FOLDER sau đó sử dụng mã này nó sẽ giúp bạn

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

Trong Android 5.0 Lollipop, tôi thấy rằng chúng ta cần thêm sự cho phép để Tệp kê khai:

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

Nếu không, chúng tôi không thể thấy bất kỳ tệp nào trong sdcard. Tôi mất một giờ để tìm thấy điều này!

Các vấn đề liên quan