ConsoleOutputStream (Jython API documentation)
Date: 2017-06-30

org.python.util

## Class ConsoleOutputStream

- java.lang.Object
- - java.io.OutputStream
  - - java.io.FilterOutputStream
    - - org.python.util.ConsoleOutputStream

- All Implemented Interfaces:
    Closeable, Flushable, AutoCloseable

      public class ConsoleOutputStream
      extends FilterOutputStream

  This class may be used to wrap and replace `System.out` so that the console handling library (JLine or Java Readline) can treat an incomplete line (one without a newline) as a prompt string, and so know the true position of the cursor. It achieves this by keeping a copy of bytes that pass through from from upstream to the true `System.out`, until either a newline arrives, or a defined capacity (typically the console width) is reached. If client code requests the partial line as a prompt, that action also empties the buffer. In that case, the client (which is the console object) is responsible for making the prompt emerge on the real console.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ConsoleOutputStream(OutputStream out, int promptCapacity)` Create a wrapper on an `OutputStream` that holds a copy of the last incomplete line written to it (as bytes), in case it is needed as a console prompt.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()`
    `void` | `flush()`
    `void` | `write(int b)` This write method steals a copy of each byte in a buffer while passing it on to the wrapped stream.

    - ### Methods inherited from class java.io.FilterOutputStream

      `write, write`

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

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

- - ### Constructor Detail

    - #### ConsoleOutputStream

          public ConsoleOutputStream(OutputStream out,
                                     int promptCapacity)

      Create a wrapper on an `OutputStream` that holds a copy of the last incomplete line written to it (as bytes), in case it is needed as a console prompt.
      Parameters:
        `out` - the stream wrapped (normally `System.out`)
        `promptCapacity` - maximum number of bytes to buffer

  - ### Method Detail

    - #### write

          public void write(int b)
                     throws IOException

      This write method steals a copy of each byte in a buffer while passing it on to the wrapped stream. The buffer is reset by each newline, when it overflows, or by the client when it is taken as a console prompt in `getPrompt(Charset)`.
      Overrides:
        `write` in class `FilterOutputStream`
      Throws:
        `IOException`

    - #### flush

          public void flush()
                     throws IOException

      Specified by:
        `flush` in interface `Flushable`
      Overrides:
        `flush` in class `FilterOutputStream`
      Throws:
        `IOException`

    - #### close

          public void close()
                     throws IOException

      Specified by:
        `close` in interface `Closeable`
      Specified by:
        `close` in interface `AutoCloseable`
      Overrides:
        `close` in class `FilterOutputStream`
      Throws:
        `IOException`

Jython homepage