我编写代码来删除文件,就像:
File logFile = new File(fileName);
deleteSuccess = logFile.delete();
但是Veracode:给我一些关于资源没有发布的警告。我想知道删除文件后如何释放资源。
Veracode错误如下
Veracode的:
描述
应用程序无法释放(或错误地释放)系统资源,然后才能重新使用。这种情况通常发生在数据库连接或文件句柄等资源上。大多数未发布的资源问题导致一般的软件可靠性问题,但如果攻击者可以故意触发资源泄漏,则可能通过耗尽资源池来启动拒绝服务攻击。
推荐 创建或分配资源时,开发人员负责正确释放资源以及计算所有可能的到期或失效路径。确保所有代码路径都正确释放资源。
答案 0 :(得分:1)
你确定这是你的整个代码吗?因为它没有任何问题。 File对象只是文件名的包装器,没有为它分配资源。 delete方法也只是调用适当的OS函数,之后不需要任何清理。
您需要关闭的是从文件派生的流(但您似乎没有)。
答案 1 :(得分:0)
一旦删除操作成功,您可以尝试显式地使File
对象无效(如果需要,检查返回的布尔值,但如果删除操作失败,则我不知道您的意图)。至少就是这样,您可以确信对File
对象的引用丢失了,因此所有相关对象也有资格进行垃圾回收。
如果VercaCode继续将此标记为警告,我认为您可以理所当然地忽略此问题。
虽然建议的更改不会添加任何值,特别是如果File对象在超出范围时有资格进行垃圾回收,如果您热衷于消除此警告,则可以采用此做法。