2011-01-06 11 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

+0

はい...あなたはそれをやろうとしましたか? – Cristian

+0

また、何か理由がある場合を除き、私はすべての場合にgetCacheDir()を使用したいと思います。これにより、カードの書き込み中にユーザーがカードをアンマウントし、アンインストール時にファイルが確実に削除されるようにするには、何も問題がないことが保証されます。 –

0

deleteOnExit()をファイルオブジェクトに呼び出すことができます。これにより、仮想マシンの終了後にファイルを削除できることが仮想マシンに通知されます。これはすぐにスペースを解放することはありませんが、アプリケーションが閉じられた後(アンドロイドで時間がかかることがあります)。ファイルに感知可能なデータがない場合、これは簡単で失敗した保存ソリューションでなければなりません。

関連する問題