2015-05-04 28 views
2

我試圖在吐司上顯示所有sd-card文件夾的所有文件,但它僅顯示文件夾列表而不是所有文件夾的子文件夾/文件。試圖在吐司上顯示sd-card的所有文件

File root=new File(Environment.getExternalStorageDirectory().getAbsolutePath()); 
 
\t \t getFilesRecursive(root); 
 
\t \t } 
 

 
\t private void getFilesRecursive(File dir) 
 
\t { 
 
\t \t if (dir.exists()) 
 
\t \t { 
 
\t \t File[] files=dir.listFiles(); 
 
\t \t //Toast.makeText(Viruslist.this, "Nos:"+files.length, Toast.LENGTH_SHORT).show(); 
 
\t \t 
 
\t \t for (int i = 0; i <files.length; i++) 
 
\t \t \t { 
 
\t \t \t File file=files[i]; 
 
\t \t \t if (file.isDirectory()) 
 
\t \t \t \t { 
 
\t \t \t \t getFilesRecursive(file); 
 
\t \t \t \t } 
 
\t \t \t else 
 
\t \t \t \t { 
 
\t \t \t \t name=file.getName(); 
 
\t \t \t \t Toast.makeText(Viruslist.this, name, Toast.LENGTH_SHORT).show(); 
 
\t \t \t \t } 
 
\t \t \t file=null; 
 
\t \t \t } 
 
\t \t 
 
\t \t } 
 
\t \t else 
 
\t \t { 
 
\t \t \t Toast.makeText(Viruslist.this, "No", Toast.LENGTH_SHORT).show(); 
 
\t \t } 
 
\t \t 
 
\t \t 
 
\t } 
 

 
}

+0

它不會顯示..如果您想要跟蹤子文件夾或文件,您需要通過子文件夾以遞歸方式傳播。 –

+0

怎麼樣?請提供一些提示。 –

回答

1
public void someMethod() 
{ 
traverse(Environment.getExternalStorageDirectory()); 
}  

public void traverse (File dir) { 
     if (dir.exists()) { 
      File[] files = dir.listFiles(); 
      for (int i = 0; i < files.length; ++i) { 
       File file = files[i]; 
       if (file.isDirectory()) { 
        traverse(file); 
       } else { 

        //print toast 
       } 
      } 
      files = null; 
     } 
    } 

這個標識每個目錄裏的文件..試試這個..嘗試,只要它的使用進行抵消對象。嘗試在後臺線程中這樣做..因爲它可能需要時間

+0

評論不適用於擴展討論;這個對話已經[轉移到聊天](http://chat.stackoverflow.com/rooms/77094/discussion-on-answer-by-preethi-rao-trying-to-show-all-files-of-sd-卡上烤麪包)。 – Taryn