Удаление файлов, созданных с помощью FileOutputStream - PullRequest
12 голосов
/ 20 июля 2010

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

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

Ответы [ 5 ]

11 голосов
/ 21 июля 2010

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

8 голосов
/ 20 июля 2010

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

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

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

0 голосов
/ 27 июля 2013

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

        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();
0 голосов
/ 20 июля 2010

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

- изменить -

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

0 голосов
/ 20 июля 2010

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

...