Подтвердить что ты не робот

Java file.delete() возвращает false, но file.exists() возвращает true

Когда я пытаюсь удалить файл, который присутствует в tomcat-сервере conf/Catalina/localhost из java-кода, тогда file.delete() всегда возвращает false. Но если я проверяю файл с помощью функции file.exists(), он возвращает true. Я не получаю никаких исключений. Пожалуйста, помогите нам, почему это происходит. Какое решение для этого?

4b9b3361

Ответ 1

Когда я пытаюсь удалить файл, который присутствует на сервере tomcat conf/Catalina/localhost из java-кода, тогда file.delete() всегда возвращает false. Но если я проверяю файл с помощью функции file.exists() он возвращает true.

Скорее всего у вас нет разрешения для удаления файлов на сервере. Проверьте свои права.

f.delete() возвращает false, это означает, что он не был/не может быть удален, а f.exists() возвращает true, поэтому файл существует, но не может быть удален.

Ответ 2

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

К сожалению, метод File.delete() предоставляет очень мало информации о том, почему; это в значительной степени зависит от вас, чтобы тыкать и понять это. Но есть хорошие новости; вы не хотите использовать File в первую очередь.

Java 7 представила новый пакет java.nio.file, который является гораздо более надежным API доступа к файлам. Он предоставляет концепцию абстрактного Path и разделяет конкретные операции на Files, в частности, он обеспечивает Files.delete(), который документирован для получения четких исключений, описывающих причины, по которым может произойти удаление.

Используйте Path и Files; вы будете рады, что вы это сделали.

Ответ 3

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

e.g -

fileInputStream.close();
file.delete();

Ответ 4

Если каталог не пуст, то метод File.delete() возвращает false, не вызывая ошибку.

Вы должны очистить каталог перед удалением.

Ответ 5

Это означает, что файл существует, но ваш java-процесс не имеет разрешения на его удаление. Вот почему функция delete возвращает false

Returns: true if and only if the file or directory is successfully deleted; false otherwise

Ответ 6

перед удалением файла вы должны закрыть все подключения для чтения и записи файла после того, как файл будет удален на 100% например               buffedreader.close()              outputstream.close()