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

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