13

私は Android プラットフォーム用に開発しています。
私のアプリは、次の単純な呼び出しで一時ファイルを作成します。

FileOutputStream fos = openFileOutput("MY_TEMP.TXT", Mode);

通常どおり書き込みと読み取りができるため、正常に動作します。

問題は、アプリを終了するときにこのファイルを削除したいことです。私が使用した:

File f = new File(System.getProperty("user.dir"), "MY_TEMP.TXT");
f.delete()

ただし、常に false を返し、ファイルは削除されません。
私が試してみました:

File f = new File("MY_TEMP.TXT");
f.delete();

そして、それも機能しません。

4

5 に答える 5

13

この投稿を確認したところ、FileOutputStream から作成されたファイルを削除する最良の方法は、 Context メソッド deleteFile(TEMP_FILE) からの単純な呼び出しです。

于 2010-07-21T04:23:34.933 に答える
8

開いているファイルを削除することはできません。削除する前にストリームを閉じる必要があります。

fos.close();
f.delete();

File#createTempFile()とは言うものの、基盤となるプラットフォームに自動クリーンアップ作業を行わせ、 で相対パスを使用することによって引き起こされる可能性のある移植性の問題を回避するために を使用したいと思いますFile

于 2010-07-20T14:54:51.560 に答える
0

ファイルを削除する前に、ストリームが閉じているかどうかを再確認してください。

于 2010-07-20T14:57:28.530 に答える
0

ファイルを削除する前に、ファイルを閉じる必要があります。以下のコードを使用します。

        FileOutputStream fos = openFileOutput("MY_TEMP.TXT",Mode);
        File f = new File(System.getProperty("user.dir"),"MY_TEMP.TXT");
        fos.close();
        File f = new File("MY_TEMP.TXT");
        f.delete();
于 2013-07-27T17:56:33.020 に答える
0

File.deleteOnExit()すでに確かな答えがいくつかありますが、VM の終了時にファイルの削除をスケジュールするものについて言及したいだけです。

- 編集 -

ファイルに接続されているすべてのストリームを閉じる必要があります。

于 2010-07-20T15:00:16.760 に答える