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