2011-08-15 98 views
0

我只需要列出存在於SD卡上的文件。Android:檢查SD卡上的目錄

用下面的代碼:

File sdcard=new File(Environment.getExternalStorageDirectory().getAbsolutePath()); 
if(sdcard.isDirectory()){ 
     String files[]= sdcard.list(); 
     for(int i=0;i<files.length;i++){ 
      File f=new File(files[i]); 

      if(!f.isDirectory()) 
       Log.d("FILES",files[i]); 
     } 
} 

我也看到在日誌中的子目錄。我究竟做錯了什麼?

回答

1

試試這個:

if(sdcard.isDirectory()){ 
    File[] files = sdcard.listFiles(); 
    for (File f : files){ 
     if(!f.isDirectory()) 
      Log.d("FILES",f.getName()); 
    } 
} 

的主要區別是sdcard.files() VS sdcard.listFiles()

1

我認爲問題是,你需要遞歸做到這一點:

File sdcard=Environment.getExternalStorageDirectory(); 

private void logFiles(File sdcard) { 
if(sdcard.isDirectory()){ 
     File[] files= sdcard.listFiles(); 
     for(int i=0;i<files.length;i++){ 
      if(!f.isDirectory()) 
       Log.d("FILES",files[i]); 
      else 
       logFiles(files[i]); 
     } 
} 
} 

我沒有測試過這一點,但最後還有可能是你失蹤,你可能會發現listFiles是一個更好的選擇,但是,在我離開這裏時,您需要記錄文件名,而不是File