【发布时间】:2019-05-15 13:55:50
【问题描述】:
一直在寻找解决此问题的方法。阅读所有以前的答案,但没有一个帮助我。 SonarQube 会不会有什么错误?
public class Br {
public String loader(String FilePath){
BufferedReader br;
String str = null;
StringBuilder strb = new StringBuilder();
try {
br = new BufferedReader(new FileReader(FilePath));
while ((str = br.readLine()) != null) {
strb.append(str).append("\n");
}
} catch (FileNotFoundException f){
System.out.println(FilePath+" does not exist");
return null;
} catch (IOException e) {
e.printStackTrace();
}
return strb.toString();
}
}
【问题讨论】:
-
运行代码 100 万次。你会看到你已经创建了一个资源泄漏。您正在打开资源,但从不关闭它们
-
您缺少
br.close()方法以防止资源泄漏。这可以在catch块之后的finally块或try (BufferedReader br = new BufferedReader(new FileReader(FilePath))) { ....中实现 -
试了你说的,还是报错。
-
始终默认使用 try-with-resources。
-
根本没有帮助。尝试了所有建议的方法仍然有很多其他错误。如果我尝试添加 finally{} ,我会得到 "br was not initialized" 。在我将 br 设置为 null 后,我最终会出现其他错误等等。
标签: java try-catch bufferedreader