public class ConsoleOutputStream extends FilterOutputStream
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 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. |
public ConsoleOutputStream(OutputStream out, int promptCapacity)
OutputStream
that holds a copy of the last incomplete
line written to it (as bytes), in case it is needed as a console prompt.out
- the stream wrapped (normally System.out
)promptCapacity
- maximum number of bytes to bufferpublic void write(int b) throws IOException
getPrompt(Charset)
.write
in class FilterOutputStream
IOException
public void flush() throws IOException
flush
in interface Flushable
flush
in class FilterOutputStream
IOException
public void close() throws IOException
close
in interface Closeable
close
in interface AutoCloseable
close
in class FilterOutputStream
IOException