2010-09-15 53 views
7

我很高興閱讀和寫入預設文件,並可以手動填充列表視圖,但我希望有一個官方(或不)文件瀏覽器,我錯過了,或其他更優雅的解決方案,向用戶展示一個目錄列表,並讓他們選擇一個文件。從sd卡上(目錄)獲取文件列表的好方法是什麼?

+0

排序的字符串值!我需要的命令是:path.list(); path.listFiles();和dialog.setItems(pathlist); - 甚至沒有需要列表視圖:) – Chozabu 2010-09-15 16:51:50

回答

18
final String state = Environment.getExternalStorageState(); 
if (Environment.MEDIA_MOUNTED.equals(state)) { 
File[] files = Environment.getExternalStorageDirectory().listFiles(); 
} else { 
... 
} 
+1

看起來不錯!我會放手一搏! – Chozabu 2010-09-15 10:17:21

+1

在代碼中發現了一個拼寫錯誤,否則它不會編譯:Files [] files = ... - > File [] files = ... – Minsky 2013-08-08 12:44:23

+2

還有一個'.list()'方法,它只返回文件名,所以沒有必要獲得所有的File對象。 – Micer 2013-10-08 13:20:38

17
File fileList = new File("/sdcard"); 
if (fileList != null){ 
    File[] filenames = fileList.listFiles(); 
     for (File tmpf : filenames){ 
      //Do something with the files 
     } 
    } 
} 

是另一種方法,你可以嘗試

+3

看起來像它會工作,但它最好使用 Environment.getExternalStorageDirectory() 在 文件的fileList =新的文件( 「/ SD卡」); 萬一被稱爲「sdcard」以外的情況 – Chozabu 2010-09-15 16:47:33

0

代碼:從外部存儲到上市的ListView android系統中的所有音樂文件或文檔文件或視頻文件,圖像,。

ArrayList<String> filenames; 
ArrayAdapter<String> adapter; 

// onCreate方法

songlist = findViewById(R.id.songlist); //songlist is ListView widget 
    filenames = new ArrayList<>(); 
    getMusic();   // music files funtions 
    adapter=new ArrayAdapter<>(YourActivity.this, android.R.layout.simple_list_item_1, filenames); 
    songlist.setAdapter(adapter); 

// getMusic()是用於從外部存儲獲取和過濾所有音樂文件的方法

private void getMusic() { 

    File path = Environment.getExternalStorageDirectory(); 
    String filename ; 
    Queue<File> files = new LinkedList<>();   //Linklist 

    files.addAll(Arrays.asList(path.listFiles())); //adding all files of path in linklist 

    while (!files.isEmpty()){ 
     File file = files.remove(); 
     if (file.isDirectory()){ 
      files.addAll(Arrays.asList(file.listFiles())); 


     } 
     else if (file.getName().endsWith(".mp3")){ //filtering files 
      filename = file.getName();    // according to their extension 
      filenames.add(filename);    //filenames is string ListArray 

     } 
     else if (file.getName().endsWith(".ogg")){ 
      filename = file.getName(); 
      filenames.add(filename); 
     } 
     else if (file.getName().endsWith(".amr")){ 
      filename = file.getName(); 
      filenames.add(filename); 
     } 
     else if (file.getName().endsWith(".wav")){ 
      filename = file.getName(); 
      filenames.add(filename); 
     } 
     else if (file.getName().endsWith(".wma")){ 
      filename = file.getName(); 
      filenames.add(filename); 
     } 
     else if (file.getName().endsWith(".flac")){ 
      filename = file.getName(); 
      filenames.add(filename); 
     } 


    } 


} 

只是改變像(.MP3,.WAV),以 .your_file_extension