# Class Base64.OutputStream

java.lang.Object
java.io.OutputStream
java.io.FilterOutputStream
org.daypilot.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.
           DONT_BREAK_LINES: don't break lines at 76 characters
             (only meaningful when encoding)
             Note: Technically, this makes your encoding non-compliant.

    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.DONT_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`

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