2011-08-12 35 views
7

Tôi đang sử dụng tệpBrowser để tìm tệp trên điện thoại nhưng tôi muốn hiển thị tất cả các tệp mà ứng dụng của tôi có thể mở cho người dùng và sau đó người dùng chọn một tệp. Giống như Trình phát nhạc, hiển thị tất cả các bài hát trên điện thoại, trên sdcard và trong bộ nhớ trong, không chỉ các bài hát trong thư mục mà người dùng ở đó.Cách tìm tất cả các tệp có phần mở rộng nhất định trên Android?

Trả lời

8

Sử dụng bộ lọc tên tệp trong khi liệt kê các tệp. Các mẫu dưới đây sẽ liệt kê ra tất cả các file mp3 trong một root thư mục nhất định (Lưu ý - Các mã dưới đây không làm điều đó một cách đệ quy cho tất cả các thư mục dưới root) -

String files[] = root.list(audioFilter); 

FilenameFilter audioFilter = new FilenameFilter() { 
    File f; 
    public boolean accept(File dir, String name) { 
    if(name.endsWith(".mp3") || name.endsWith(".MP3")) { 
      return true; 
     } 
     f = new File(dir.getAbsolutePath()+"/"+name); 

     return f.isDirectory(); 
    } 
}; 
+0

Cảm ơn rất nhiều. Bây giờ tôi đang cố gắng làm điều này để có được tất cả các tập tin trong các thư mục con, và nó chỉ là vấn đề thời gian. –

+0

Tôi nghĩ rằng chuỗi kiểm tra nên tốt hơn là: name.length()> = 4 && name.subString (name.length-4) .toLowerCase(). Bằng (". Mp3"), hoặc một cái gì đó tương tự (không kiểm tra) . Lý do là bạn sẽ không cần phải đi qua chuỗi nhiều hơn một lần theo cách này. –

1

Tôi không biết bạn đang triển khai FileBrowser nào nhưng bạn nên chấp nhận FileFilter. Bạn có thể triển khai bộ lọc của riêng mình cung cấp mã cho public abstract boolean accept (File pathname)

+0

Ravi là nhanh hơn, nhưng nhờ bạn. –

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