2010-09-09 1 views
1

Я пишу код, чтобы удалить файл, так же, как:Как освободить ресурс после удаления файла с помощью java?

File logFile = new File(fileName); 

deleteSuccess = logFile.delete(); 

Но Veracode: дайте мне предупреждение о том, что ресурс не выделяется. Я хочу знать, как освободить ресурс после удаления файла.

Ошибка Veracode, как следует

Veracode:

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

Рекомендации Когда ресурс создан или выделен, разработчик несет ответственность за правильное освобождение ресурса, а также за учет всех возможных путей истечения срока действия или аннулирования. Убедитесь, что все пути кода правильно освобождают ресурсы.

ответ

1

Вы уверены, что это весь ваш код? Потому что в этом нет ничего плохого. Объект File - это всего лишь обертка вокруг имени файла, для этого нет ресурсов. Метод удаления также просто вызывает соответствующую функцию ОС и не требует никакой очистки после этого.

Что вам нужно для закрытия - это потоки, полученные из файла (но у вас их нет).

+0

Да, тесные потоки необходимы, но для удаления я не знаю ничего, что могу отпустить. – user391370

+0

Я думаю, что инструмент по ошибке. Получаете ли вы другие предупреждения, с которыми вы не понимаете или не согласны? – Thilo

0

Вы можете попытаться явно аннулировать объект File после того, как операция удаления прошла успешно (проверьте, если необходимо, возвращаемое логическое значение, но я не знаю о ваших намерениях, если операция удаления не удалась). По крайней мере, вы можете быть уверены в том, что ссылка на объект File потеряна, и, следовательно, все связанные объекты также имеют право на сбор мусора.

Если VercaCode продолжает отмечать это как предупреждение, я предполагаю, что вы можете быть оправданы в игнорировании этой проблемы.

Хотя предлагаемое изменение не добавляет какого-либо значения, особенно если объект File имеет право на сбор мусора, если он выходит за пределы области видимости, вы можете принять эту практику, если у вас есть желание избавиться от этого предупреждения.

+0

Спасибо, ваше предложение, я попробую – user391370

Смежные вопросы