java不关闭流_java – 是否可以在不关闭流的情况下关闭Reader?

我有一个接受InputStream(二进制数据)并将其序列化为

XML的方法.为了做到这一点,它使用base64编码器和Reader包装流,将其转换为字符数据.但是,由于InputStream作为参数传入,我认为关闭流是一个有害的副作用,而Reader.close()的合同说它会这样做.如果我不关闭阅读器,编译器警告我,我有一个

Resource leak: reader is never closed

所以,我可以在读者声明中添加@SuppressWarnings(“资源”),但这是正确的做法吗?我错过了什么吗?

这是实际的代码:

/**

* Writes base64 encoded text read from the binary stream.

*

* @param binaryStream

* The binary stream to write from

* @return this XmlWriter (for chaining)

* @throws IOException

*/

public XmlWriter binary( InputStream binaryStream ) throws IOException {

Reader reader = new InputStreamReader(

new Base64InputStream( binaryStream, true, base64LineLength, base64LineSeparator.getBytes( charset ) ) );

int bufferSize = 2048;

int charsRead;

char[] buffer = new char[bufferSize];

while ( (charsRead = reader.read( buffer, 0, bufferSize )) >= 0 ) {

writer.write( buffer, 0, charsRead );

}

return this;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值