Как освободить ресурс после удаления файла по java? - PullRequest
1 голос
/ 09 сентября 2010

Я пишу код для удаления файла, например:

File logFile = new File(fileName);

deleteSuccess = logFile.delete();

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

Ошибка Veracode выглядит следующим образом

Veracode:

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

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

Ответы [ 2 ]

1 голос
/ 09 сентября 2010

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

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

0 голосов
/ 09 сентября 2010

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

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

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

...