Package com.sun.mail.util
Class BASE64EncoderStream
- java.lang.Object
-
- java.io.OutputStream
-
- java.io.FilterOutputStream
-
- com.sun.mail.util.BASE64EncoderStream
-
- All Implemented Interfaces:
java.io.Closeable
,java.io.Flushable
,java.lang.AutoCloseable
- Direct Known Subclasses:
BEncoderStream
public class BASE64EncoderStream extends java.io.FilterOutputStream
This class implements a BASE64 encoder. It is implemented as a FilterOutputStream, so one can just wrap this class around any output stream and write bytes into this filter. The encoding is done as the bytes are written out.
-
-
Field Summary
Fields Modifier and Type Field Description private byte[]
buffer
private int
bufsize
private int
bytesPerLine
private int
count
private int
lineLimit
private static byte[]
newline
private boolean
noCRLF
private byte[]
outbuf
private static char[]
pem_array
This array maps the characters to their 6 bit values
-
Constructor Summary
Constructors Constructor Description BASE64EncoderStream(java.io.OutputStream out)
Create a BASE64 encoder that encodes the specified input stream.BASE64EncoderStream(java.io.OutputStream out, int bytesPerLine)
Create a BASE64 encoder that encodes the specified output stream.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Forces any buffered output bytes to be encoded out to the stream and closes this output streamprivate void
encode()
Encode the data stored inbuffer
.static byte[]
encode(byte[] inbuf)
Base64 encode a byte array.private static byte[]
encode(byte[] inbuf, int off, int size, byte[] outbuf)
Internal use only version of encode.private static int
encodedSize(int size)
Return the corresponding encoded size for the given number of bytes, not including any CRLF.void
flush()
Flushes this output stream and forces any buffered output bytes to be encoded out to the stream.void
write(byte[] b)
Encodesb.length
bytes to this output stream.void
write(byte[] b, int off, int len)
Encodeslen
bytes from the specifiedbyte
array starting at offsetoff
to this output stream.void
write(int c)
Encodes the specifiedbyte
to this output stream.
-
-
-
Field Detail
-
buffer
private byte[] buffer
-
bufsize
private int bufsize
-
outbuf
private byte[] outbuf
-
count
private int count
-
bytesPerLine
private int bytesPerLine
-
lineLimit
private int lineLimit
-
noCRLF
private boolean noCRLF
-
newline
private static byte[] newline
-
pem_array
private static final char[] pem_array
This array maps the characters to their 6 bit values
-
-
Constructor Detail
-
BASE64EncoderStream
public BASE64EncoderStream(java.io.OutputStream out, int bytesPerLine)
Create a BASE64 encoder that encodes the specified output stream.- Parameters:
out
- the output streambytesPerLine
- number of bytes per line. The encoder inserts a CRLF sequence after the specified number of bytes, unless bytesPerLine is Integer.MAX_VALUE, in which case no CRLF is inserted. bytesPerLine is rounded down to a multiple of 4.
-
BASE64EncoderStream
public BASE64EncoderStream(java.io.OutputStream out)
Create a BASE64 encoder that encodes the specified input stream. Inserts the CRLF sequence after outputting 76 bytes.- Parameters:
out
- the output stream
-
-
Method Detail
-
write
public void write(byte[] b, int off, int len) throws java.io.IOException
Encodeslen
bytes from the specifiedbyte
array starting at offsetoff
to this output stream.- Overrides:
write
in classjava.io.FilterOutputStream
- Parameters:
b
- the data.off
- the start offset in the data.len
- the number of bytes to write.- Throws:
java.io.IOException
- if an I/O error occurs.
-
write
public void write(byte[] b) throws java.io.IOException
Encodesb.length
bytes to this output stream.- Overrides:
write
in classjava.io.FilterOutputStream
- Parameters:
b
- the data to be written.- Throws:
java.io.IOException
- if an I/O error occurs.
-
write
public void write(int c) throws java.io.IOException
Encodes the specifiedbyte
to this output stream.- Overrides:
write
in classjava.io.FilterOutputStream
- Parameters:
c
- thebyte
.- Throws:
java.io.IOException
- if an I/O error occurs.
-
flush
public void flush() throws java.io.IOException
Flushes this output stream and forces any buffered output bytes to be encoded out to the stream.- Specified by:
flush
in interfacejava.io.Flushable
- Overrides:
flush
in classjava.io.FilterOutputStream
- Throws:
java.io.IOException
- if an I/O error occurs.
-
close
public void close() throws java.io.IOException
Forces any buffered output bytes to be encoded out to the stream and closes this output stream- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classjava.io.FilterOutputStream
- Throws:
java.io.IOException
-
encode
private void encode() throws java.io.IOException
Encode the data stored inbuffer
. Usesoutbuf
to store the encoded data before writing.- Throws:
java.io.IOException
- if an I/O error occurs.
-
encode
public static byte[] encode(byte[] inbuf)
Base64 encode a byte array. No line breaks are inserted. This method is suitable for short strings, such as those in the IMAP AUTHENTICATE protocol, but not to encode the entire content of a MIME part.- Parameters:
inbuf
- the byte array- Returns:
- the encoded byte array
-
encode
private static byte[] encode(byte[] inbuf, int off, int size, byte[] outbuf)
Internal use only version of encode. Allow specifying which part of the input buffer to encode. If outbuf is non-null, it's used as is. Otherwise, a new output buffer is allocated.
-
encodedSize
private static int encodedSize(int size)
Return the corresponding encoded size for the given number of bytes, not including any CRLF.
-
-