为了账号安全,请及时绑定邮箱和手机立即绑定

有资源泄漏警告,但我似乎无法关闭它

有资源泄漏警告,但我似乎无法关闭它

德玛西亚99 2023-03-17 13:46:07
这里的代码给出了一个警告,即Resource leak: 'f' is never closed. 如果我在 try 块内关闭 f 它会起作用,但如果我放在f.close()finally 块内它就不起作用。它显示错误f cannot be resolved。所以有什么问题?因此,该程序应该从用户那里获取输入并将其保存在 .doc 文件中,然后从同一文件中读取数据并将其打印出来。如果不是很明显,我正在学习 Java。所以代码有效,但我注意到有一个f未关闭的警告。我把f.close()语句放在块中finally。它在那里显示错误。close 语句在块中时运行,但在块中try无法识别。ffinallytry {    RandomAccessFile f = new RandomAccessFile("E:\\emp.doc","r");    for (i = 0; i < size; i++) {        id1[i] = f.read();        name[i] = f.readUTF();        add[i] = f.readUTF();        sal[i]=f.readDouble();        if (sal[i] > 25000) {            System.out.println("ID:" + id1[i] + "\nName: " + name[i] + "\nAddress:" + add[i] + "\nSalary" + sal[i]);        }    }} catch (Exception ex) {    ex.printStackTrace();}//finally {//  f.close();//}因此,在代码中,如果我不放置该程序块,该程序将运行但会显示未关闭的finally警告。f如果我尝试将其放入块close内try,则不会有任何警告。但是如果我把块放在close里面finally就会出现错误f cannot be resolved。那么我该怎么做才能解决这个警告呢?
查看完整描述

1 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

改成

try ( RandomAccessFile f = new RandomAccessFile("E:\\emp.doc","r")){
....
}

不需要关闭,因为它会在 try-scope 结束后自动调用。


查看完整回答
反对 回复 2023-03-17
  • 1 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号