SONAR问题 - 关闭此FileInputStream

时间:2017-01-31 14:47:28

标签: java sonarqube

如何修复此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);               
}

2 个答案:

答案 0 :(得分:2)

当您使用try-with-resources语句时,您不再需要明确关闭BufferedReader,只需从当前代码中移除br.close();即可足以修复您的{1}}作为BufferedReader的声纳问题将在关闭时关闭基础InputStreamReaderInputStreamReader将在关闭时关闭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