Feature suggestion: Add support to Base64.Encoder and Base64.Decoder to wrap Writer / Reader
Rob Spoor
openjdk at icemanx.nl
Tue Jan 8 21:08:59 UTC 2019
Java 8 added Base64 with its nested classes Encoder and Decoder. These
both have methods to wrap an OutputStream / InputStream respectively.
However, base64 is text; the alphabets exist out of ASCII characters
only. This is (somewhat) acknowledged by the presence of the
encodeToString(byte[]) and decode(String) methods. Doesn't it then also
make sense to add methods to wrap a Writer and Reader respectively?
(Perhaps Appendable / Readable is even better to provide more
flexibility.) When reading an exception can be thrown if an unsupported
character is encountered.
I have already written a simple example to wrap a StringBuilder in an
OutputStream that I then wrap using Base64.Encoder:
https://github.com/robtimus/data-url/blob/master/src/main/java/com/github/robtimus/net/protocol/data/DataURLs.java.
This could probably add some validation that characters are limited to
the actual alphabet in the convert method, but I was a bit lazy there.
If an Appendable is wrapped the flush and close methods should delegate
to the wrapped object if that implements Flushable / Closeable respectively.
More information about the core-libs-dev
mailing list