# Class Base64.InputStream

java.lang.Object
java.io.InputStream
java.io.FilterInputStream
org.daypilot.util.Base64.InputStream

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

Enclosing class:
  `Base64`

public static class Base64.InputStream extends FilterInputStream
A `Base64.InputStream` will read data from another `java.io.InputStream`, 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.FilterInputStream

  `in`

- ## Constructor Summary

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

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `read()`
  Reads enough of the input stream to convert to/from Base64 and returns the next byte.
  `int`
  `read(byte[] dest, int off, int len)`
  Calls `read()` repeatedly until the end of stream is reached or len bytes are read.

  ### Methods inherited from class java.io.FilterInputStream

  `available, close, mark, markSupported, read, reset, skip`

  ### Methods inherited from class java.io.InputStream

  `nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo`

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

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

- ## Constructor Details

  - ### InputStream

    public InputStream(InputStream in)
    Constructs a `Base64.InputStream` in DECODE mode.
    Parameters:
      `in` - the `java.io.InputStream` from which to read data.
    Since:
      1.3

  - ### InputStream

    public InputStream(InputStream in, int options)
    Constructs a `Base64.InputStream` 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.InputStream( in, Base64.DECODE )`

    Parameters:
      `in` - the `java.io.InputStream` from which to read data.
      `options` - Specified options
    Since:
      2.0
    See Also:
      - `Base64.ENCODE`
      - `Base64.DECODE`
      - `Base64.DONT_BREAK_LINES`

- ## Method Details

  - ### read

    public int read() throws IOException
    Reads enough of the input stream to convert to/from Base64 and returns the next byte.
    Overrides:
      `read` in class `FilterInputStream`
    Returns:
      next byte
    Throws:
      `IOException`
    Since:
      1.3

  - ### read

    public int read(byte[] dest, int off, int len) throws IOException
    Calls `read()` repeatedly until the end of stream is reached or len bytes are read. Returns number of bytes read into array or -1 if end of stream is encountered.
    Overrides:
      `read` in class `FilterInputStream`
    Parameters:
      `dest` - array to hold values
      `off` - offset for array
      `len` - max number of bytes to read into array
    Returns:
      bytes read into array or -1 if end of stream is encountered.
    Throws:
      `IOException`
    Since:
      1.3