Удаление файлов создается с FileOutputStream

Я разрабатываю для платформы 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();

И это не работает также.

12
задан tshepang 23 August 2014 в 21:37
поделиться

4 ответа

Я проверил этот постинг и лучший способ удалить файл, созданный из FileOutputStream - это простой вызов из Context метода deleteFile(TEMP_FILE), как это просто.

12
ответ дан 2 December 2019 в 07:20
поделиться

Вы не можете удалить открытый файл. Перед удалением необходимо закрыть поток.

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

Тем не менее, я бы предпочел использовать File # createTempFile () , чтобы позволить базовой платформе выполнять автоматическую очистку и избежать потенциальных проблем с переносимостью, вызванных использованием относительных путей в файле .

9
ответ дан 2 December 2019 в 07:20
поделиться

Еще раз проверьте, закрыт ли поток, прежде чем пытаться удалить файл.

0
ответ дан 2 December 2019 в 07:20
поделиться

У вас уже есть несколько твердых ответов, но я просто хочу упомянуть File.deleteOnExit(), который планирует удаление файла при выходе виртуальной машины.

--edit--

Вы все равно должны закрыть все потоки, подключенные к файлу.

0
ответ дан 2 December 2019 в 07:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: