Package org.python.util
Class ConsoleInputStream
java.lang.Object
java.io.InputStream
java.io.FilterInputStream
org.python.util.ConsoleInputStream
- All Implemented Interfaces:
Closeable
,AutoCloseable
This class is intended to replace
System.in
for use with console libraries that
provide a line-oriented input mechanism. The console libraries provide a method to get the next
line from the console as a String. Particular sub-classes should wrap this character-oriented
method in a definition of getLine()
.
The libraries JLine and Java Readline have both been used to give Jython line-recall, editing and
a line history preserved between sessions. Both deal with the console encoding internally, and
interact with the user in terms of a buffer of characters. Our need in Jython is to access a
byte-stream encoding the characters, with line-endings, since it is the text layer of the Python
io stack, whether we are using the io
module or file
built-in, that
should deal with encoding.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic enum
Enumeration used to specify whether an end-of-line should be added or replaced at the end of each line read. -
Method Summary
Modifier and TypeMethodDescriptionint
The number of bytes left unread in the current encoded line.void
mark
(int readlimit) Mark is not supported.boolean
Mark is not supported.int
read()
Read the next byte of data from the buffered input line.int
read
(byte[] b, int off, int len) Reads up to len bytes of data from this input stream into an array of bytes.void
reset()
Mark is not supported.long
skip
(long n) Skip forward n bytes within the current encoded line.Methods inherited from class java.io.FilterInputStream
close, read
Methods inherited from class java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
-
Method Details
-
read
Read the next byte of data from the buffered input line. The byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been recognised, the value -1 is returned. This method blocks until input data are available, the end of the stream is detected, or an exception is thrown. Normally, an empty line results in an encoded end-of-line being returned.- Overrides:
read
in classFilterInputStream
- Throws:
IOException
-
read
Reads up to len bytes of data from this input stream into an array of bytes. If len is not zero, the method blocks until some input is available; otherwise, no bytes are read and 0 is returned. This implementation callsgetLine()
at most once to get a line of characters from the console, and encodes them as bytes to be read back from the stream.- Overrides:
read
in classFilterInputStream
- Throws:
IOException
EOFException
-
skip
Skip forward n bytes within the current encoded line. A call toskip
will not result in reading a new line withgetLine()
.- Overrides:
skip
in classFilterInputStream
- Throws:
IOException
-
available
The number of bytes left unread in the current encoded line.- Overrides:
available
in classFilterInputStream
- Throws:
IOException
-
mark
public void mark(int readlimit) Mark is not supported.- Overrides:
mark
in classFilterInputStream
-
reset
Mark is not supported.- Overrides:
reset
in classFilterInputStream
- Throws:
IOException
-
markSupported
public boolean markSupported()Mark is not supported.- Overrides:
markSupported
in classFilterInputStream
-