Class Base64OutputStream

java.lang.Object
java.io.OutputStream
com.tangosol.io.Base64OutputStream
All Implemented Interfaces:
com.oracle.coherence.common.io.OutputStreaming, OutputStreaming, Closeable, Flushable, AutoCloseable

public class Base64OutputStream extends OutputStream implements OutputStreaming
Writes binary data into a Writer using IETF RFC 2045 Base64 Content Transfer Encoding. If the Base64OutputStream is not the first to write data into the Writer, it may be desired to write a line feed before Base64 data. According to the specification, Base64 data cannot exceed 76 characters per line. Be careful to avoid calling flush() except when a stream of Base64 content is complete.
Author:
cp 2000.09.06
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected static final char[]
    Base64 encodes into this "alphabet" of 64 characters.
    protected static final char
    The Base64 line feed character.
    protected static final char
    The Base64 padding character.
    protected static final int
    The number of Base64 character groups in one line.
    protected byte[]
    Accumulated bytes.
    protected char[]
    An array that is used to send 4 characters at a time to the underlying Writer object.
    protected int
    The number of bytes accumulated (0, 1, 2 or 3).
    protected int
    The number of groups left to write in the current line.
    protected boolean
    True if lines are to be broken by BASE64_LF;
    protected boolean
    True after close is invoked.
    protected Writer
    The Writer object to which the Base64 encoded data is written.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Construct a Base64OutputStream on a Writer object.
    Base64OutputStream(Writer writer, boolean fBreakLines)
    Construct a Base64OutputStream on a Writer object and specifying a line-break option.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Close the stream, flushing any accumulated bytes.
    static char[]
    encode(byte[] ab)
    Encode the passed binary data using Base64 encoding.
    static char[]
    encode(byte[] ab, boolean fBreakLines)
    Encode the passed binary data using Base64 encoding.
    static char[]
    encode(byte[] ab, int ofb, int cb, boolean fBreakLines)
    Encode the passed binary data using Base64 encoding.
    void
    Close the stream, flushing any accumulated bytes.
    protected void
    Flushes the bytes accumulated by the write(int) method.
    void
    write(byte[] ab, int ofb, int cb)
    Writes len bytes from the specified byte array starting at offset off to this output stream.
    void
    write(int b)
    Writes the specified byte to this output stream.

    Methods inherited from class java.io.OutputStream

    nullOutputStream, write

    Methods inherited from class java.lang.Object

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

    Methods inherited from interface com.oracle.coherence.common.io.OutputStreaming

    write
  • Field Details

    • BASE64_ALPHABET

      protected static final char[] BASE64_ALPHABET
      Base64 encodes into this "alphabet" of 64 characters.
    • BASE64_PAD

      protected static final char BASE64_PAD
      The Base64 padding character. Base64 is encoded into 4-character chunks; if the last chunk does not contain 4 characters, it is filled with this padding character.
      See Also:
    • BASE64_LF

      protected static final char BASE64_LF
      The Base64 line feed character. Base64 is encoded into 76-character lines unless .
      See Also:
    • GROUPS_PER_LINE

      protected static final int GROUPS_PER_LINE
      The number of Base64 character groups in one line. This number prevents a line from exceeding 76 characters.
      See Also:
    • m_fClosed

      protected boolean m_fClosed
      True after close is invoked.
    • m_writer

      protected Writer m_writer
      The Writer object to which the Base64 encoded data is written.
    • m_fBreakLines

      protected boolean m_fBreakLines
      True if lines are to be broken by BASE64_LF;
    • m_cLineGroups

      protected int m_cLineGroups
      The number of groups left to write in the current line.
    • m_abAccum

      protected byte[] m_abAccum
      Accumulated bytes.
    • m_cAccum

      protected int m_cAccum
      The number of bytes accumulated (0, 1, 2 or 3).
    • m_achGroup

      protected char[] m_achGroup
      An array that is used to send 4 characters at a time to the underlying Writer object.
  • Constructor Details

    • Base64OutputStream

      public Base64OutputStream(Writer writer)
      Construct a Base64OutputStream on a Writer object.
      Parameters:
      writer - the Writer to write the Base64 encoded data to
    • Base64OutputStream

      public Base64OutputStream(Writer writer, boolean fBreakLines)
      Construct a Base64OutputStream on a Writer object and specifying a line-break option.
      Parameters:
      writer - the Writer to write the Base64 encoded data to
      fBreakLines - true to break the output into 76-character lines
  • Method Details

    • write

      public void write(int b) throws IOException
      Writes the specified byte to this output stream.
      Specified by:
      write in interface com.oracle.coherence.common.io.OutputStreaming
      Specified by:
      write in class OutputStream
      Parameters:
      b - the byte.
      Throws:
      IOException - if an I/O error occurs. In particular, an IOException may be thrown if the output stream has been closed.
    • write

      public void write(byte[] ab, int ofb, int cb) throws IOException
      Writes len bytes from the specified byte array starting at offset off to this output stream.

      If b is null, a NullPointerException is thrown.

      If off is negative, or len is negative, or off+len is greater than the length of the array b, then an IndexOutOfBoundsException is thrown.

      Specified by:
      write in interface com.oracle.coherence.common.io.OutputStreaming
      Overrides:
      write in class OutputStream
      Parameters:
      ab - the data
      ofb - the start offset in the data
      cb - the number of bytes to write
      Throws:
      IOException - if an I/O error occurs. In particular, an IOException is thrown if the output stream is closed.
    • flush

      public void flush() throws IOException
      Close the stream, flushing any accumulated bytes. The underlying writer is not closed.
      Specified by:
      flush in interface Flushable
      Specified by:
      flush in interface com.oracle.coherence.common.io.OutputStreaming
      Overrides:
      flush in class OutputStream
      Throws:
      IOException - if an I/O error occurs
    • close

      public void close() throws IOException
      Close the stream, flushing any accumulated bytes. The underlying writer is not closed.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Specified by:
      close in interface com.oracle.coherence.common.io.OutputStreaming
      Overrides:
      close in class OutputStream
      Throws:
      IOException - if an I/O error occurs
    • flushAccumulator

      protected void flushAccumulator() throws IOException
      Flushes the bytes accumulated by the write(int) method.
      Throws:
      IOException - if an I/O error occurs
    • encode

      public static char[] encode(byte[] ab)
      Encode the passed binary data using Base64 encoding.
      Parameters:
      ab - the array containing the bytes to encode
      Returns:
      the encoded data as a char array
    • encode

      public static char[] encode(byte[] ab, boolean fBreakLines)
      Encode the passed binary data using Base64 encoding.
      Parameters:
      ab - the array containing the bytes to encode
      fBreakLines - true to break the output into 76-character lines
      Returns:
      the encoded data as a char array
    • encode

      public static char[] encode(byte[] ab, int ofb, int cb, boolean fBreakLines)
      Encode the passed binary data using Base64 encoding.
      Parameters:
      ab - the array containing the bytes to encode
      ofb - the start offset in the byte array
      cb - the number of bytes to encode
      fBreakLines - true to break the output into 76-character lines
      Returns:
      the encoded data as a char array