我正在为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();
它也不起作用。
答案 0 :(得分:11)
我查看了这个帖子,删除从FileOutputStream创建的文件的最佳方法是从Context方法deleteFile(TEMP_FILE)中简单调用,就像那样简单。
答案 1 :(得分:8)
您无法删除已打开的文件。您需要在删除之前关闭流。
fos.close();
f.delete();
也就是说,我宁愿使用File#createTempFile()
让底层平台进行自动清理工作,并避免因使用File
中的相对路径而导致的潜在可移植性问题。
答案 2 :(得分:0)
如果在您尝试删除文件之前关闭了Stream,请仔细检查。
答案 3 :(得分:0)
您已经有了一些可靠的答案,但我只想提及File.deleteOnExit()
,它会在VM退出时安排删除文件。
- 编辑 -
您仍然应该关闭连接到该文件的所有流。