【 Android 】利用file取得資料夾內檔案

在實作上需要取得特定目錄裡的檔案名稱以便作list使用,所以就實作了一個測試的小程式,順便作一下紀錄。

1.  先抓取要使用的資料夾路徑,並產生一個新的folder來代表實體的資料夾
private File root;
root = Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_MUSIC);
String path = root.getPath();
File folder = new File(path);

2. 再建一個過濾器,去過濾自已想要的檔案,就可以在list裡面看到自已需要的檔案了(如下圖)
FilenameFilter mediafilefilter = new FilenameFilter(){
//private String[] filter = {".mp3",".ogg",".3gp",".mp4"};
private String[] filter = {".mp3"};
@Override
public boolean accept(File dir, String filename) {
      for(int i= 0;i< filter.length ; i++){
if(filename.indexOf(filter[i]) != -1)return true;
}
return false;
}};

File[] list = folder.listFiles(mediafilefilter);

這裡是過濾mp3檔,所以把資料夾裡的mp3檔都選出來了。

3. 若是不要過濾,需要全部的資料,就不用實作filter的部份,只需要實作一個陣列儲存所有的檔案名稱即可。
String[] list = folder.list();
for(int i = 0; i< list.length;i++){
file.add(list[i]);
}

ps: 這裡有一點需要注意一下,由於目前部份裝置是沒有實體sd卡的,所以在系統會預設一塊記憶當sd卡使用,所以路徑還是會指向sd卡的路徑( /storage/emulated/0/Music ),所以在系統上還必預加上讀取外部資料的權限才可以使用,不然得到的folder都會是null,導致出錯。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

留言

  1. Jammy Casino | Slot Machines and Sports Books | JTM Hub
    The Jammy 대전광역 출장마사지 Casino 동해 출장안마 is a new place to 오산 출장마사지 visit. Play 통영 출장마사지 at one of our 14 casinos, including over 1600 태백 출장마사지 slots, live casino games, and sports betting apps.

    回覆刪除

張貼留言

這個網誌中的熱門文章

【 Android 】控制ImageView大小&位置

【 Android 】防止系統進入休眠和螢幕恆亮