InputStream
(バイナリ データの)を受け取り、それを XML にシリアル化するメソッドがあります。そのために、ストリームを base64 エンコーダーでラップし、Reader
文字データに変換します。ただし、InputStream
はパラメーターとして渡されるため、ストリームを閉じることは有害な副作用であると考えられますReader.close()
。リーダーを閉じないと、コンパイラは、
リソース リーク: リーダーが閉じられることはありません
それで、@SuppressWarnings( "resource" )
リーダー宣言に a を追加できますが、それは正しいことですか? 何か不足していますか?
実際のコードは次のとおりです。
/**
* Writes base64 encoded text read from the binary stream.
*
* @param binaryStream
* The binary stream to write from
* @return <code>this</code> 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;
}