Он возвращает значение boolean, вы должны это проверить. Из JavaDoc:
Возвращает: true тогда и только тогда, когда файл или каталог были успешно удалены; ложь иначе
Вам следует проверить значение возврата и принять меры.
Если он возвращает false, вполне возможно, что у вас нет разрешения на удаление файла.
В этом случае вы можете проверить, доступно ли приложение для записи в файл, и, если нет, попытаться сделать его доступным для записи - снова возвращается boolean. В случае успеха вы можете попробовать удалить еще раз.
Вы можете использовать служебный метод:
private void deleteFile(final File f) throws IOException {
if (f.delete()) {
return;
}
if (!f.canWrite() && !f.setWritable(true)) {
throw new IOException("No write permissions on file '" + f + "' and cannot set writeable.");
}
if (!f.delete()) {
throw new IOException("Failed to delete file '" + f + "' even after setting writeable; file may be locked.");
}
}
Я бы также прислушался к их совету в JavaDoc:
Обратите внимание, что класс Files определяет метод удаления, который генерирует исключение IOException, когда файл не может быть удален. Это полезно для отчетов об ошибках и для диагностики, почему файл не может быть удален.
При условии, что вы используете Java 7 то есть. Этот метод вызывает ряд исключений, с которыми вы можете справиться:
try {
Files.delete(path);
} catch (NoSuchFileException x) {
System.err.format("%s: no such" + " file or directory%n", path);
} catch (DirectoryNotEmptyException x) {
System.err.format("%s not empty%n", path);
} catch (IOException x) {
// File permission problems are caught here.
System.err.println(x);
}
Пример взят из учебной страницы Oracle.
person
Boris the Spider
schedule
02.11.2013
File.delete(), а неFiles.delete(...)из пакета NIO2. - person Tom G   schedule 02.11.2013