2017-01-16 3 views
4

У меня возникла проблема при удалении файлов из каталога img с помощью org.apache.commons.io.FileUtils. Я использую этот код:Как правильно удалить файл?

File dir = new File(".\\img"); 
    FileFilter fileFilter = new WildcardFileFilter(userId + ".*"); 
    File[] files = dir.listFiles(fileFilter); 
    System.out.println("files found: " + files.length); 
    for (int i = 0; i < files.length; i++) { 
     boolean success = FileUtils.deleteQuietly(files[i]); 
     System.out.println(files[i] + " delete result = " + success); 
    } 
} 

На самом деле код используется для замены файлов изображений существует в IMG каталог с новым. Мне нужно удалить все ранее существовавшие файлы, имена которых равны n. *, С новым файлом, например. n.png. Если я пытаюсь удалить файлы изображений, я получаю ложное значение для успеха переменной, и файлы не удаляются. Но не файлы изображений, например. * .abc; * .acd; * .acdc и т. д. удаляются успешно. Что такое проблема?

+2

В конце имеется закрывающая скоба без подходящего открывающего кронштейна, а отступы странны. Есть ли какая-либо ошибка в коде? –

+0

Не могли бы вы предоставить образец вывода? – phss

+4

Почему бы не попробовать вызвать 'files [i] .delete()' и посмотреть, какое исключение выбрано. –

ответ

1

Попробуйте это:

java.nio.file.Files.delete(files[i].toPath()); 

И посмотрим, что будет сгенерировано исключение.

0

Проблема заключалась в том, что файлы, предназначенные для удаления, использовались в качестве входного потока в другой части кода, и этот входной поток не был закрыт. Таким образом, файлы не могут быть удалены.