Package 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 inherited from class java.io.FilterOutputStream

`out`

## Constructor Summary

Constructors
Constructor
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

Modifier and Type
Method
Description
`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.io.OutputStream

`nullOutputStream`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### 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 Details

### 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 `AutoCloseable`
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 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