如何修复此SONAR问题? 关闭此FileInputStream。
提前致谢!
File billFile = new File(filePath);
try (BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(billFile), DEFAULTCHARSET));) {
...
br.close();
} catch (FileNotFoundException e) {
LOG.error(e.getMessage());
} catch (IOException e) {
LOG.error(e.getMessage(), e);
}
答案 0 :(得分:2)
当您使用try-with-resources语句时,您不再需要明确关闭BufferedReader
,只需从当前代码中移除br.close();
即可足以修复您的{1}}作为BufferedReader
的声纳问题将在关闭时关闭基础InputStreamReader
,InputStreamReader
将在关闭时关闭FileInputStream
。
如果还不够,您只需重写代码即可明确声明您的FileInputStream
作为 try-with-resources 语句的资源,如下所示:
try (FileInputStream fis = new FileInputStream(billFile);
Reader reader = new InputStreamReader(fis, DEFAULTCHARSET);
BufferedReader br = new BufferedReader(reader) {
...
如果它仍然无法正常工作,请确保为Java 7及更高版本正确配置了声纳,否则它将无法识别 try-with-resources 语句导致这种违规行为加剧。
答案 1 :(得分:1)
您可能正在使用过时的SONAR版本或规则集。检查版本。 ({7}引入了try-with-resources