[
https://issues.apache.org/jira/browse/CODEC-183?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13944273#comment-13944273
]
Gary Gregory commented on CODEC-183:
------------------------------------
Feel free to provide a patch with unit tests.
> BaseNCodecOutputStream only supports writing EOF on close()
> -----------------------------------------------------------
>
> Key: CODEC-183
> URL: https://issues.apache.org/jira/browse/CODEC-183
> Project: Commons Codec
> Issue Type: Bug
> Affects Versions: 1.6
> Environment: I'm running with version 1.6, but quick look shows it's
> present in 1.8.
> Reporter: Steven Wurster
>
> The only way to add the EOF marker when encoding or decoding with the
> BaseNCodecOutputStream is via the close() function. The flush() function
> does not perform this logic, and it is questionable whether or not it should.
> The problem is that I want to write to a Base64OutputStream in the middle of
> writing to another stream. That is, I will write some content to a stream,
> then wrap that stream with a Base64OutputStream to write some more (encoded)
> content, and then finish writing directly to the original stream (and so not
> encoded). Calling flush() on the Base64OutputStream will not write the EOF
> marker, which means bytes can be lost. I do not want to call close() on the
> Base64OutputStream as that will propagate to my original stream, which I need
> to leave open.
> Ideas for resolving this include the following:
> * Adding a separate function for writing the final (EOF) bytes without an
> explicit close (hacky solution).
> * Changing the visibility of various functions and members so that I can
> write my own descendant that provides the functionality I want. Note that
> the encode() and decode() functions on BaseNCodec used in the close() routine
> are package-private, and so I cannot call them within a descendant.
--
This message was sent by Atlassian JIRA
(v6.2#6252)