2012-09-18 38 views
0

我想要創建和刪除位於/ data/data/providers/downloads/cache中的一些文件。到目前爲止,我可以下載目標文件併成功保存在/ data/data/providers/downloads/cache中,但是當我試圖刪除位於/ data/data/providers/downloads/cache中的文件時,它最終會失敗。我的方法如下如何刪除Android上的/ data/data/providers/downloads/cache中的文件

File directory = new File("/data/data/providers/downloads/cache"); 
File[] files = directory.listFiles(); 

我想列出所有文件,以便我可以找到需要刪除的目標文件。 我發現listFiles()方法總是返回NULL,所以我的問題是,我可以使用listFile()到dir/data/data/providers/downloads/cache嗎?

任何理想都歡迎。

BR 艾倫

+0

你是如何在/ data/data/providers中創建文件的。手機是否植根?通常/數據/數據受到保護,只有屬於該應用程序的文件夾可見 – nandeesh

回答

0

我用這個方法:當我要刪除所有,包括目錄中的文件。

static public boolean deleteDirectory(File path) { 
    if(path.exists()) { 
     File[] files = path.listFiles(); 
     if (files == null) { 
      return true; 
     } 
     for(int i = 0; i < files.length; i++) { 
      if(files[i].isDirectory()) { 
       deleteDirectory(files[i]); 
      } 
      else { 
       files[i].delete(); 
      } 
      Log.d("Deleting Files", files[i].getPath()); 
     } 
    } 

    return(path.delete()); 
} 

但是android有它自己的可以使用的清除緩存方法,但它需要你實際上將東西保存到緩存中。問題可能是您永遠不會添加任何內容,並且您只有權清除自己的緩存?

How do I take advantage of Android's "Clear Cache" button反正討論的問題:)

好運

編輯: 此外,你確定你的文件路徑是正確的?你可以用

 Environment.getDownloadCacheDirectory() 

爲了找到根目錄到緩存我想?

+0

感謝您的回覆。 我相信我給出了正確的文件路徑。我只是想出了另一個理想,在android系統中,某個應用程序數據的目錄不會暴露給程序員,比如數據路徑/data/data/com.android/providers/downloads這就是我的情況。我無法直接使用File操作目錄。查找和刪除應用程序數據路徑中的內容的唯一方法是使用Cursor和ContentResolver。所以當我使用listFiles()方法應用程序的數據路徑時,它總是返回NULL。 這些是我的意見,歡迎任何其他意見。 – Alan

+0

然後,我很難幫助你,而不知道該計劃的更多細節抱歉:/ –

+0

:P謝謝你們 – Alan