Package de.uplanet.util.base64
Class Base64OutputStream
- java.lang.Object
-
- java.io.OutputStream
-
- de.uplanet.util.base64.Base64OutputStream
-
- All Implemented Interfaces:
Closeable
,Flushable
,AutoCloseable
@Scriptable public final class Base64OutputStream extends OutputStream
Base64 encoding as described in RFC 2045 section 6.8.
0 A 17 R 34 i 51 z 1 B 18 S 35 j 52 0 2 C 19 T 36 k 53 1 3 D 20 U 37 l 54 2 4 E 21 V 38 m 55 3 5 F 22 W 39 n 56 4 6 G 23 X 40 o 57 5 7 H 24 Y 41 p 58 6 8 I 25 Z 42 q 59 7 9 J 26 a 43 r 60 8 10 K 27 b 44 s 61 9 11 L 28 c 45 t 62 + 12 M 29 d 46 u 63 / 13 N 30 e 47 v 14 O 31 f 48 w (pad) = 15 P 32 g 49 x 16 Q 33 h 50 y
This stream-based encoding will outperformBase64Encoder
when writing data sizes beyond about 400 bytes to aStringWriter
provided that the output buffer is properly preallocated using theoutputSizeFromInputSize(int)
method. In these cases use the following pattern:
byte[] l_data;
// ...
StringWriter l_sw = new StringWriter(Base64OutputStream.outputSizeFromInputSize(l_data.length));
Base64OutputStream l_out = new Base64OutputStream(l_sw);
l_out.write(l_data);
l_out.close();
String l_strEncoded = l_sw.toString();
- See Also:
Base64InputStream
-
-
Constructor Summary
Constructors Constructor Description Base64OutputStream(Writer p_out)
Constructor for Base64OutputStream.Base64OutputStream(XMLStreamWriter p_xmlStreamWriter)
Constructor for Base64OutputStream.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
void
finish()
Finishes writing base64-encoded data to the output stream without closing the underlying stream.void
flush()
Flush the stream.static int
outputSizeFromInputSize(int p_iSize)
Calculates the size of the output for the given input size.void
write(byte[] p_buf)
Writes an array of bytes to the base64-encoded output stream.void
write(byte[] p_buf, int p_iOffs, int p_iLen)
Writes an array of bytes to the base64-encoded output stream.void
write(int p_byte)
Writes a single byte to the base64-encoded output stream.-
Methods inherited from class java.io.OutputStream
nullOutputStream
-
-
-
-
Constructor Detail
-
Base64OutputStream
public Base64OutputStream(Writer p_out)
Constructor for Base64OutputStream. Creates a new base64 output stream to write data to the specified underlying output stream with a default 512-byte buffer size.- Parameters:
p_out
- The underlying stream.
-
Base64OutputStream
public Base64OutputStream(XMLStreamWriter p_xmlStreamWriter)
Constructor for Base64OutputStream. Creates a new base64 output stream to write data to the specifiedXMLStreamWriter
with a default 512-byte buffer size.- Parameters:
p_xmlStreamWriter
- Thep_xmlStreamWriter
to write to.
-
-
Method Detail
-
outputSizeFromInputSize
public static int outputSizeFromInputSize(int p_iSize)
Calculates the size of the output for the given input size. Note: values obtained for chunks of data are not additive.- Parameters:
p_iSize
- The input size in bytes.- Returns:
- The output size in characters.
-
write
public void write(int p_byte) throws IOException
Writes a single byte to the base64-encoded output stream.- Specified by:
write
in classOutputStream
- Parameters:
p_byte
- The byte to be written.- Throws:
IOException
- If an I/O error occurs.
-
write
public void write(byte[] p_buf) throws IOException
Writes an array of bytes to the base64-encoded output stream.- Overrides:
write
in classOutputStream
- Parameters:
p_buf
- The data to be written.- Throws:
IOException
- If an I/O error occurs.
-
write
public void write(byte[] p_buf, int p_iOffs, int p_iLen) throws IOException
Writes an array of bytes to the base64-encoded output stream.- Overrides:
write
in classOutputStream
- Parameters:
p_buf
- The data to be written.p_iOffs
- The start offset of the data.p_iLen
- The length of the data.- Throws:
IOException
- If an I/O error occurs.
-
finish
public void finish() throws IOException
Finishes writing base64-encoded data to the output stream without closing the underlying stream.- Throws:
IOException
- If an I/O error occurs.
-
flush
public void flush() throws IOException
Flush the stream. Note: at most two bytes may not be flushed unlessfinish()
is applied.- Specified by:
flush
in interfaceFlushable
- Overrides:
flush
in classOutputStream
- Throws:
IOException
- If an I/O error occurs.
-
close
public void close() throws IOException
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classOutputStream
- Throws:
IOException
- If an I/O error occurs.
-
-