Use try-with-resources or close this “BufferedOutputStream“ in a “finally“ clause.

Sonar常见问题及修改建议2021(持续更新!!)https://blog.csdn.net/libusi001/article/details/103717457

一、报错信息

Use try-with-resources or close this "BufferedOutputStream" in a "finally" clause.

使用try-with-resources或在“ finally”子句中关闭此“ BufferedOutputStream”。

二、源代码

try {
    BufferedOutputStream out = out = new BufferedOutputStream(
                        new FileOutputStream(new File(legalizeExamTemplatePath,newFileName)));
    out.write(file.getBytes());
    out.flush();
    out.close();
} catch (IOException e) {
    return Result.error("上传失败!");
            }

如果出现异常会跳转到catch,那么out.close()就不会执行。

所以需要在“ finally”子句中关闭此“ BufferedOutputStream”。

BufferedOutputStream需要写在try外面才行,而且必须初始化,初始化为null。

这样又会报空指针异常,所以需要判空,优化代码如下;

三、优化后代码

BufferedOutputStream out = null;
try {
    out = new BufferedOutputStream(
            new FileOutputStream(new File(legalizeExamTemplatePath, newFileName)));
    out.write(file.getBytes());
    out.flush();
    log.info("上传成功!");
    return Result.success("上传成功!", null);
} catch (IOException e) {
    return Result.error("上传失败!");
} finally {
    CloseIoUtils.closeAll(out);
}
try(BufferedOutputStream out = new BufferedOutputStream(
            new FileOutputStream(new File(legalizeExamTemplatePath, newFileName)));) {
    out.write(file.getBytes());
    out.flush();
    log.info("上传成功!");
    return Result.success("上传成功!", null);
} catch (IOException e) {
    return Result.error("上传失败!");
}

Java IO流关闭工具类详解:https://blog.csdn.net/libusi001/article/details/100741637

有用请点赞,养成良好习惯!

鼓励、疑问、交流请留言!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕白Lee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值