2011-01-06 64 views
0

我正在使用以下函數將對象寫入外部存儲。如何從外部存儲中刪除寫入的數據?

使用它之後,我想從外部存儲器中刪除該對象以釋放內存。 任何人都可以指導我該怎麼辦?

public boolean saveObject(List<DalCategories> obj) { 
    if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) { 
     cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"MyCustomObjectForSearchFilter"); 
    } else { 
     cacheDir= getCacheDir(); 
     if(!cacheDir.exists()) { 
     cacheDir.mkdirs(); 
     } 
     final File suspend_f = new File(cacheDir, "test"); 
     FileOutputStream fos = null; 
     ObjectOutputStream oos = null; 
     boolean keep = true; 
     try { 
     fos = new FileOutputStream(suspend_f); 
     oos = new ObjectOutputStream(fos); 
     oos.writeObject(obj); 
     } catch (Exception e) { 
     keep = false; 
     } finally { 
     try { 
      if (oos != null) { 
       oos.close(); 
      } 
      if (fos != null) { 
       fos.close(); 
      } 
      if (keep == false) { 
       suspend_f.delete(); 
      } 
     } catch (Exception e) { 
      keep = false; 
     } 
     } 
     return keep; 
    } 

回答

0

在你的情況......

final File suspend_f=new File(cacheDir, "test"); 
boolean success = suspend_.delete(); 
// the success variable will have TRUE if the file was deleted 
+0

調用.delete方法後,它會直接從外部存儲中刪除該文件? – UMAR 2011-01-06 13:49:25

0

你可以在文件對象上調用deleteOnExit()。這將告訴虛擬機在虛擬機結束後可以刪除文件。這不會立即釋放空間,但應用程序關閉後(這可能需要一些時間在Android上)。如果文件中沒有明智的數據,這應該是一個簡單且失敗的解決方案。

相關問題