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

在您尝试删除文件之前,请仔细检查 Stream 是否已关闭。

于 2010-07-20T14:57:28.530 回答
0

您已经有了一些可靠的答案,但我只想提一下File.deleteOnExit()在 VM 退出时哪些计划删除文件。

- 编辑 -

您仍然应该关闭连接到该文件的所有流。

于 2010-07-20T15:00:16.760 回答
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 回答