/** {@inheritDoc} */ @Override public void write(final byte[] b, final int off, final int len) throws IOException { final ByteBuffer input = ByteBuffer.wrap(b, off, len); final int required = encoder.outputSize(len - off); if (output == null || output.capacity() < required) { output = CharBuffer.allocate(required); } else { output.clear(); } encoder.encode(input, output); output.flip(); writer.write(output.toString()); writer.flush(); }
/** {@inheritDoc} */ @Override public void close() throws IOException { if (output == null) { output = CharBuffer.allocate(8); } else { output.clear(); } encoder.finalize(output); output.flip(); writer.write(output.toString()); writer.flush(); writer.close(); }