Package 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
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

Modifier and Type
Method
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.io.OutputStream

`nullOutputStream`

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

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

## Constructor Details

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

### 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 `AutoCloseable`
Specified by:
  `close` in interface `Closeable`
Overrides:
  `close` in class `FilterOutputStream`
Throws:
  `IOException`