2014-03-27 23 views
0

的數量在我的小文件瀏覽器應用程序,我展示在每個目錄的子元素的數量等:如何高效地獲取子目錄和文件

要設置這些數字,我發動AsyncTask(所以ListView將不會從我的AdaptergetView()方法和列表中的每個項目得到「laggy」)。但是,在查看某些系統目錄(例如「/」)時,垃圾收集器會變得瘋狂並且性能顯着下降(即使應用程序完成,我的AsyncTask的多個實例仍然保留在內存中) 。

我敢肯定這是關係到我是如何實現的子目錄和子文件檢查我的AsyncTask裏面做,但是下面的遞歸方法是我能想到的唯一的事情:

//countHidden is a boolean indicating whether to count hidden files 
    private int[] getSubFilesCount(File root) { 
    int fcount = 0; 
    int dcount = 0; 
    File[] files = root.listFiles(); 
    if (files != null) 
     for (File f : files) { 
      if (f.isDirectory()) { 
       getSubFilesCount(f); 
       if (f.isHidden()) { 
        if (countHidden) 
         dcount++; 
       } else { 
        dcount++; 
       } 
      } else { 
       if (f.isHidden()) { 
        if (countHidden) 
         fcount++; 
       } else { 
        fcount++; 
       } 
      } 
     } 
    int[] tcount = { fcount, dcount }; 
    return tcount; 
} 

問題:有沒有其他辦法來獲得子目錄和文件的數量,那麼上面提到的方法會更快?

回答

0

你可以做什麼建議here這是有效地相同,但你稍微簡潔(如果你不介意我這樣說)。很明顯,你必須爲文件和目錄做這件事。我相信Java 7提供了一個更好的方法來實現這一點,但不幸的是,您現在僅限於使用Android的Java 6。

相關問題