当前位置: 首页 > 知识库问答 >
问题:

有一个资源泄漏警告,但我似乎无法关闭它[副本]

司马祖鹤
2023-03-14

这里的代码给出了资源泄漏的警告:'f'从不关闭。如果我在try块中关闭f,它可以工作,但是如果我将f.close()放在finally块中,它就不工作了。它显示错误F无法解析。那有什么问题?

因此,程序应该从用户那里获取输入并将其保存在.doc文件中,然后从同一文件中读取数据并打印出来。如果还不是很明显的话,我正在学习Java。

因此,代码可以工作,但我注意到有一个警告,f没有关闭。我将f.close()语句放在finally块中。它在那里显示了一个错误。

close语句在try块中但无法识别finally块中的f时运行。

try {
    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 conly be resolution

那么我要做什么来处理这个警告呢?

共有1个答案

鲜于致远
2023-03-14

将其更改为

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

不需要关闭,因为一旦try-scope结束,它将自动被调用

 类似资料:
  • 我是个新手。我已经编写了这段代码,它显示那里存在资源泄漏 这是什么意思?抱歉,我太天真了。

  • 我正在使用Eclipse,并执行下面的函数,碰巧我打开了一个扫描器,然后,最后我关闭了它,但Eclipse一直说它没有关闭“资源泄漏:'Scanner'没有关闭”。我可以用try with resources来完成,警告消失了,但我想知道为什么我在这里尝试的方式不起作用

  • 在中,我收到了一个警告,我不明白这一点。 这是理解问题还是java/eclipse问题?

  • 我正在读取一个文件并将其内容存储在字符串中。代码给了我一个警告:Resource leak:。我如何解决它?

  • 为什么Eclipse在下面的代码中给了我变暖的“资源泄漏:'in'从不关闭”?

  • 此代码导致资源泄漏: conin从未关闭 为什么会发生这种情况?我如何修复它?