uk.org.ogsadai.common
Class Base64Reader
java.lang.Object
|
+--java.io.Reader
|
+--uk.org.ogsadai.common.Base64Reader
- public class Base64Reader
- extends java.io.Reader
A java.io.Reader
that wraps a java.io.InputStream
and Base64 encodes its contents.
- Author:
- The OGSA-DAI Project Team
Fields inherited from class java.io.Reader |
lock |
Constructor Summary |
Base64Reader(java.io.InputStream input)
Constructs a Base64Reader that wraps the specified InputStream . |
Method Summary |
void |
close()
|
int |
read(char[] cbuf, int off, int len)
Read Base64 encoded characters into a portion of an array. |
java.lang.String |
readAll()
Reads and Base64 encodes the entire contents of the InputStream . |
private void |
readAndEncode()
Reads from the wrapped InputStream into the buffer, then encodes to Base64. |
Methods inherited from class java.io.Reader |
mark, markSupported, read, read, ready, reset, skip |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
COPYRIGHT_NOTICE
private static final java.lang.String COPYRIGHT_NOTICE
-
- See Also:
- Constant Field Values
LOG
private static final DAILogger LOG
-
BUFFER_SIZE
private static final int BUFFER_SIZE
-
- See Also:
- Constant Field Values
mInputStream
private final java.io.InputStream mInputStream
-
mByteBuffer
private byte[] mByteBuffer
-
mBase64Data
private char[] mBase64Data
-
mEncoded
private boolean mEncoded
-
mRemaining
private int mRemaining
-
mClosed
private boolean mClosed
-
Base64Reader
public Base64Reader(java.io.InputStream input)
throws java.lang.IllegalArgumentException,
OutOfMemoryException
-
Constructs a
Base64Reader
that wraps the specified InputStream
. Data read from the input stream will be Base64 encoded.
Default buffer size is 4096 * 3 bytes.
- Parameters:
input
- The InputStream
to wrap and encode.
- Throws:
java.lang.IllegalArgumentException
- if input
is null
.
OutOfMemoryException
- if there is no memory available.
read
public int read(char[] cbuf,
int off,
int len)
throws java.io.IOException,
java.lang.IllegalArgumentException
-
Read Base64 encoded characters into a portion of an array. This method will block until some input is available, an I/O error occurs, or the end of the stream is reached.
-
- Specified by:
read
in class java.io.Reader
-
- Parameters:
cbuf
- Destination buffer. Must be able to hold len
.
off
- Offset at which to start storing characters. Must be >= 0 and < size of cbuf
.
len
- Maximum number of characters to read. Must be >= 1 and < size of cbuf
- off
.
- Returns:
- The number of characters read, or -1 if the end of the stream has been reached.
- Throws:
java.io.IOException
- if the reader has already been closed or there is a problem when reading from the InputStream
.
java.lang.IllegalArgumentException
- if the cbuf
is null
or if off
or len
contain unsuitable values.
- See Also:
Reader.read(char[], int, int)
readAndEncode
private void readAndEncode()
throws java.io.IOException
-
Reads from the wrapped
InputStream
into the buffer, then encodes to Base64. Called whenever there is no more encoded data to be read.
-
- Throws:
java.io.IOException
- if a problem is encountered in reading the data from the InputStream
.
close
public void close()
-
- Specified by:
close
in class java.io.Reader
-
readAll
public java.lang.String readAll()
throws java.io.IOException,
OutOfMemoryException
-
Reads and Base64 encodes the entire contents of the
InputStream
. Note that this method may carry a significant memory overhead because all the input data will be encoded and stored in memory in its entirety.
-
- Returns:
- a
String
containing the Base64 encoded data.
- Throws:
java.io.IOException
- if the reader has already been closed or there is a problem when reading from the InputStream
.
OutOfMemoryException
- if there is no memory available.