Я разрабатываю для платформы 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();
И это не работает также.
Я проверил этот постинг и лучший способ удалить файл, созданный из FileOutputStream - это простой вызов из Context метода deleteFile(TEMP_FILE), как это просто.
Вы не можете удалить открытый файл. Перед удалением необходимо закрыть поток.
fos.close();
f.delete();
Тем не менее, я бы предпочел использовать File # createTempFile ()
, чтобы позволить базовой платформе выполнять автоматическую очистку и избежать потенциальных проблем с переносимостью, вызванных использованием относительных путей в файле
.
Еще раз проверьте, закрыт ли поток, прежде чем пытаться удалить файл.
У вас уже есть несколько твердых ответов, но я просто хочу упомянуть File.deleteOnExit()
, который планирует удаление файла при выходе виртуальной машины.
--edit--
Вы все равно должны закрыть все потоки, подключенные к файлу.