Package org.apache.tools.ant.util

# Class LineOrientedOutputStream

java.lang.Object
java.io.OutputStream
org.apache.tools.ant.util.LineOrientedOutputStream

All Implemented Interfaces:
  `Closeable`, `Flushable`, `AutoCloseable`

Direct Known Subclasses:
  `LineOrientedOutputStreamRedirector`, `LogOutputStream`

public abstract class LineOrientedOutputStream extends OutputStream
Invokes `processLine` whenever a full line has been written to this stream.

Tries to be smart about line separators.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `LineOrientedOutputStream()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `close()`
  Writes all remaining
  `void`
  `flush()`
  Flush this log stream
  `protected void`
  `processBuffer()`
  Converts the buffer to a byte[] and sends it to `processLine`
  `protected void`
  `processLine​(byte[] line)`
  Processes a line.
  `protected abstract void`
  `processLine​(String line)`
  Processes a line.
  `void`
  `write​(byte[] b, int off, int len)`
  Write a block of characters to the output stream
  `void`
  `write​(int cc)`
  Write the data to the buffer and flush the buffer, if a line separator is detected.

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

- ## Constructor Details

  - ### LineOrientedOutputStream

    public LineOrientedOutputStream()

- ## Method Details

  - ### write

    public final void write​(int cc) throws IOException
    Write the data to the buffer and flush the buffer, if a line separator is detected.
    Specified by:
      `write` in class `OutputStream`
    Parameters:
      `cc` - data to log (byte).
    Throws:
      `IOException` - if there is an error.

  - ### flush

    public void flush() throws IOException
    Flush this log stream
    Specified by:
      `flush` in interface `Flushable`
    Overrides:
      `flush` in class `OutputStream`
    Throws:
      `IOException` - if there is an error.

  - ### processBuffer

    protected void processBuffer() throws IOException
    Converts the buffer to a byte[] and sends it to `processLine`
    Throws:
      `IOException` - if there is an error.

  - ### processLine

    protected abstract void processLine​(String line) throws IOException
    Processes a line.
    Parameters:
      `line` - the line to log.
    Throws:
      `IOException` - if there is an error.

  - ### processLine

    protected void processLine​(byte[] line) throws IOException
    Processes a line.

    This implementations invokes the string-arg version converting the byte array using the default encoding. Subclasses are encouraged to override this method (and provide a dummy implementation of the String-arg version) so they don't interfere with the encoding of the underlying stream.

    Parameters:
      `line` - the line to log.
    Throws:
      `IOException` - if there is an error.
    Since:
      Ant 1.8.3

  - ### close

    public void close() throws IOException
    Writes all remaining
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Closeable`
    Overrides:
      `close` in class `OutputStream`
    Throws:
      `IOException` - if there is an error.

  - ### write

    public final void write​(byte[] b, int off, int len) throws IOException
    Write a block of characters to the output stream
    Overrides:
      `write` in class `OutputStream`
    Parameters:
      `b` - the array containing the data
      `off` - the offset into the array where data starts
      `len` - the length of block
    Throws:
      `IOException` - if the data cannot be written into the stream.