org.eigenbase.util
Class RhBase64.OutputStream

java.lang.Object
  extended by java.io.OutputStream
      extended by java.io.FilterOutputStream
          extended by org.eigenbase.util.RhBase64.OutputStream
All Implemented Interfaces:
Closeable, Flushable
Enclosing class:
RhBase64

public static class RhBase64.OutputStream
extends FilterOutputStream

A RhBase64.OutputStream will write data to another java.io.OutputStream, given in the constructor, and encode/decode to/from Base64 notation on the fly.

Since:
1.3
See Also:
RhBase64

Field Summary
private  byte[] b4
           
private  boolean breakLines
           
private  byte[] buffer
           
private  int bufferLength
           
private  boolean encode
           
private  int lineLength
           
private  int position
           
private  boolean suspendEncoding
           
 
Fields inherited from class java.io.FilterOutputStream
out
 
Constructor Summary
RhBase64.OutputStream(OutputStream out)
          Constructs a RhBase64.OutputStream in ENCODE mode.
RhBase64.OutputStream(OutputStream out, int options)
          Constructs a RhBase64.OutputStream in either ENCODE or DECODE mode.
 
Method Summary
 void close()
          Flushes and closes (I think, in the superclass) the stream.
 void flushBase64()
          Method added by PHIL.
 void resumeEncoding()
          Resumes encoding of the stream.
 void suspendEncoding()
          Suspends encoding of the stream.
 void write(byte[] theBytes, int off, int len)
          Calls write(int) repeatedly until len bytes are written.
 void write(int theByte)
          Writes the byte to the output stream after converting to/from Base64 notation.
 
Methods inherited from class java.io.FilterOutputStream
flush, write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

encode

private boolean encode

position

private int position

buffer

private byte[] buffer

bufferLength

private int bufferLength

lineLength

private int lineLength

breakLines

private boolean breakLines

b4

private byte[] b4

suspendEncoding

private boolean suspendEncoding
Constructor Detail

RhBase64.OutputStream

public RhBase64.OutputStream(OutputStream out)
Constructs a RhBase64.OutputStream in ENCODE mode.

Parameters:
out - the java.io.OutputStream to which data will be written.
Since:
1.3

RhBase64.OutputStream

public RhBase64.OutputStream(OutputStream out,
                             int options)
Constructs a RhBase64.OutputStream in either ENCODE or DECODE mode.

Valid options:

   ENCODE or DECODE: Encode or Decode as data is read.
   DONT_BREAK_LINES: don't break lines at 76 characters
     (only meaningful when encoding)
     Note: Technically, this makes your encoding non-compliant.
 

Example: new RhBase64.OutputStream( out, RhBase64.ENCODE )

Parameters:
out - the java.io.OutputStream to which data will be written.
options - Specified options.
Since:
1.3
See Also:
RhBase64.ENCODE, RhBase64.DECODE, RhBase64.DONT_BREAK_LINES
Method Detail

write

public void write(int theByte)
           throws IOException
Writes the byte to the output stream after converting to/from Base64 notation. When encoding, bytes are buffered three at a time before the output stream actually gets a write() call. When decoding, bytes are buffered four at a time.

Overrides:
write in class FilterOutputStream
Parameters:
theByte - the byte to write
Throws:
IOException
Since:
1.3

write

public void write(byte[] theBytes,
                  int off,
                  int len)
           throws IOException
Calls write(int) repeatedly until len bytes are written.

Overrides:
write in class FilterOutputStream
Parameters:
theBytes - array from which to read bytes
off - offset for array
len - max number of bytes to read into array
Throws:
IOException
Since:
1.3

flushBase64

public void flushBase64()
                 throws IOException
Method added by PHIL. [Thanks, PHIL. -Rob] This pads the buffer without closing the stream.

Throws:
IOException

close

public void close()
           throws IOException
Flushes and closes (I think, in the superclass) the stream.

Specified by:
close in interface Closeable
Overrides:
close in class FilterOutputStream
Throws:
IOException
Since:
1.3

suspendEncoding

public void suspendEncoding()
                     throws IOException
Suspends encoding of the stream. May be helpful if you need to embed a piece of base640-encoded data in a stream.

Throws:
IOException
Since:
1.5.1

resumeEncoding

public void resumeEncoding()
Resumes encoding of the stream. May be helpful if you need to embed a piece of base640-encoded data in a stream.

Since:
1.5.1