org.apache.calcite.avatica.util

## Class Base64.OutputStream

- java.lang.Object
- - java.io.OutputStream
  - - java.io.FilterOutputStream
    - - org.apache.calcite.avatica.util.Base64.OutputStream

All Implemented Interfaces:
  Closeable, Flushable, AutoCloseable

Enclosing class:
  Base64

    public static class Base64.OutputStream
    extends FilterOutputStream

A `Base64.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:
  `Base64`

### Field Summary

Fields
`private byte[]` `b4`
`private boolean` `breakLines`
`private byte[]` `buffer`
`private int` `bufferLength`
`private byte[]` `decodabet`
`private boolean` `encode`
`private int` `lineLength`
`private int` `options`
`private int` `position`
`private boolean` `suspendEncoding`

### Fields inherited from class java.io.FilterOutputStream

`out`

### Constructor Summary

Constructors
Constructor and Description
`OutputStream(OutputStream out)` Constructs a `Base64.OutputStream` in ENCODE mode.
`OutputStream(OutputStream out, int options)` Constructs a `Base64.OutputStream` in either ENCODE or DECODE mode.

### Method Summary

All Methods Instance Methods Concrete Methods
`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

#### options

    private int options

#### decodabet

    private byte[] decodabet

### Constructor Detail

#### OutputStream

    public OutputStream(OutputStream out)

Constructs a `Base64.OutputStream` in ENCODE mode.

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

#### OutputStream

    public OutputStream(OutputStream out,
                        int options)

Constructs a `Base64.OutputStream` in either ENCODE or DECODE mode.

Valid options:

       ENCODE or DECODE: Encode or Decode as data is read.
       DO_BREAK_LINES: don't break lines at 76 characters
         (only meaningful when encoding)

Example: `new Base64.OutputStream( out, Base64.ENCODE )`

Parameters:
  `out` - the `java.io.OutputStream` to which data will be written.
  `options` - Specified options.
Since:
  1.3
See Also:
  `Base64.ENCODE`, `Base64.DECODE`, `Base64.DO_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` - if there's an error.

#### close

    public void close()
               throws IOException

Flushes and closes (I think, in the superclass) the stream.

Specified by:
  `close` in interface `Closeable`
Specified by:
  `close` in interface `AutoCloseable`
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 base64-encoded data in a stream.

Throws:
  `IOException` - if there's an error flushing
Since:
  1.5.1

#### resumeEncoding

    public void resumeEncoding()

Resumes encoding of the stream. May be helpful if you need to embed a piece of base64-encoded data in a stream.

Since:
  1.5.1