public class StrictLineReader extends Object implements Closeable
InputStream
for reading lines.
This class is used for buffered reading of lines. For purposes of this class, a line ends with
"\n" or "\r\n". End of input is reported by throwing EOFException
. Unterminated line at
end of input is invalid and will be ignored, the caller may use hasUnterminatedLine()
to detect it after catching the EOFException
.
This class is intended for reading input that strictly consists of lines, such as line-based
cache entries or cache journal. Unlike the BufferedReader
which in conjunction
with InputStreamReader
provides similar functionality, this class uses different
end-of-input reporting and a more restrictive definition of a line.
This class supports only charsets that encode '\r' and '\n' as a single byte with value 13 and 10, respectively, and the representation of no other character contains these values. We currently check in constructor that the charset is one of US-ASCII, UTF-8 and ISO-8859-1. The default charset is US_ASCII.
Constructor and Description |
---|
StrictLineReader(InputStream in,
Charset charset)
Constructs a new
LineReader with the specified charset and the default capacity. |
StrictLineReader(InputStream in,
int capacity,
Charset charset)
Constructs a new
LineReader with the specified capacity and charset. |
Modifier and Type | Method and Description |
---|---|
void |
close()
Closes the reader by closing the underlying
InputStream and
marking this reader as closed. |
int |
readInt()
Read an
int from a line containing its decimal representation. |
String |
readLine()
Reads the next line.
|
public StrictLineReader(InputStream in, Charset charset)
LineReader
with the specified charset and the default capacity.in
- the InputStream
to read data from.charset
- the charset used to decode data. Only US-ASCII, UTF-8 and ISO-8859-1 are
supported.NullPointerException
- if in
or charset
is null.IllegalArgumentException
- if the specified charset is not supported.public StrictLineReader(InputStream in, int capacity, Charset charset)
LineReader
with the specified capacity and charset.in
- the InputStream
to read data from.capacity
- the capacity of the buffer.charset
- the charset used to decode data. Only US-ASCII, UTF-8 and ISO-8859-1 are
supported.NullPointerException
- if in
or charset
is null.IllegalArgumentException
- if capacity
is negative or zero
or the specified charset is not supported.public void close() throws IOException
InputStream
and
marking this reader as closed.close
in interface Closeable
close
in interface AutoCloseable
IOException
- for errors when closing the underlying InputStream
.public String readLine() throws IOException
"\n"
or "\r\n"
,
this end of line marker is not included in the result.IOException
- for underlying InputStream
errors.EOFException
- for the end of source stream.public int readInt() throws IOException
int
from a line containing its decimal representation.int
from the next line.IOException
- for underlying InputStream
errors or conversion error.EOFException
- for the end of source stream.Copyright © 2014. All rights reserved.