2013-08-15 6 views
2

Я пытаюсь удалить файл, используя File.delete()Почему этот файл не удаляется?

Вот мой код:

File stagingFile = new File(stagingPath,configFileName); 
FileOutputStream fos = new FileOutputStream(stagingFile); 
int c = 0; 
while((c=input.read())!=-1){ 
    fos.write(c); 
} 
fos.flush(); 
fos.close(); 
input.close(); 

И после выполнения некоторых операций, я делаю это:

boolean delete = stagingFile.delete(); 

delete возвращает ложь. Насколько я вижу, я закрыл все обработчики, относящиеся к stagingFile. Я не знаю, почему он не удаляется

+0

Вы можете использовать метод Files.delete ([path]), чтобы получить IOException при неудачном удалении, и это должно сказать вам, почему файл не может быть удален. –

+0

NB Ваш код копирования так же неэффективен, как и может быть. Используйте «BufferedInputStream» и «BufferedOutputStream» вокруг потоков файлов или читайте/записывайте в/из массива 'byte []', стараясь правильно использовать счет, возвращаемый 'read()'. – EJP

ответ

5

Из File.delete docs:

Обратите внимание, что класс Files определяет метод удаления бросить IOException, если файл не может быть удален. Это полезно для сообщений об ошибках и для диагностики того, почему файл не может быть удален.

Дать this method (Files.delete(Path)) выстрел.

1

Другая идея: используйте createTempFile(), чтобы создать временный файл в первую очередь. После этого используйте Files.delete(), чтобы удалить файл.