Package java.io

Class LineNumberReader

All Implemented Interfaces:
Closeable, AutoCloseable, Readable

public class LineNumberReader
extends BufferedReader
Wraps an existing Reader and counts the line terminators encountered while reading the data. The line number starts at 0 and is incremented any time '\r', '\n' or "\r\n" is read. The class has an internal buffer for its data. The size of the buffer defaults to 8 KB.
  • Field Summary

    Fields inherited from class java.io.Reader

    lock
  • Constructor Summary

    Constructors
    Constructor Description
    LineNumberReader​(Reader in)
    Constructs a new LineNumberReader on the Reader in.
    LineNumberReader​(Reader in, int size)
    Constructs a new LineNumberReader on the Reader in.
  • Method Summary

    Modifier and Type Method Description
    int getLineNumber()
    Returns the current line number for this reader.
    void mark​(int readlimit)
    Sets a mark position in this reader.
    int read()
    Reads a single character from the source reader and returns it as an integer with the two higher-order bytes set to 0.
    int read​(char[] buffer, int offset, int count)
    Reads up to count characters from the source reader and stores them in the character array buffer starting at offset.
    String readLine()
    Returns the next line of text available from this reader.
    void reset()
    Resets this reader to the last marked location.
    void setLineNumber​(int lineNumber)
    Sets the line number of this reader to the specified lineNumber.
    long skip​(long charCount)
    Skips charCount characters in this reader.

    Methods inherited from class java.io.BufferedReader

    close, markSupported, ready

    Methods inherited from class java.io.Reader

    read, read

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • LineNumberReader

      public LineNumberReader​(Reader in)
      Constructs a new LineNumberReader on the Reader in. The internal buffer gets the default size (8 KB).
      Parameters:
      in - the Reader that is buffered.
    • LineNumberReader

      public LineNumberReader​(Reader in, int size)
      Constructs a new LineNumberReader on the Reader in. The size of the internal buffer is specified by the parameter size.
      Parameters:
      in - the Reader that is buffered.
      size - the size of the buffer to allocate.
      Throws:
      IllegalArgumentException - if size <= 0.
  • Method Details

    • getLineNumber

      public int getLineNumber()
      Returns the current line number for this reader. Numbering starts at 0.
      Returns:
      the current line number.
    • mark

      public void mark​(int readlimit) throws IOException
      Sets a mark position in this reader. The parameter readlimit indicates how many characters can be read before the mark is invalidated. Sending reset() will reposition this reader back to the marked position, provided that readlimit has not been surpassed. The line number associated with this marked position is also stored so that it can be restored when reset() is called.
      Overrides:
      mark in class BufferedReader
      Parameters:
      readlimit - the number of characters that can be read from this stream before the mark is invalidated.
      Throws:
      IOException - if an error occurs while setting the mark in this reader.
      See Also:
      BufferedReader.markSupported(), reset()
    • read

      public int read() throws IOException
      Reads a single character from the source reader and returns it as an integer with the two higher-order bytes set to 0. Returns -1 if the end of the source reader has been reached.

      The line number count is incremented if a line terminator is encountered. Recognized line terminator sequences are '\r', '\n' and "\r\n". Line terminator sequences are always translated into '\n'.

      Overrides:
      read in class BufferedReader
      Returns:
      the character read or -1 if the end of the source reader has been reached.
      Throws:
      IOException - if the reader is closed or another IOException occurs.
    • read

      public int read​(char[] buffer, int offset, int count) throws IOException
      Reads up to count characters from the source reader and stores them in the character array buffer starting at offset. Returns the number of characters actually read or -1 if no characters have been read and the end of this reader has been reached.

      The line number count is incremented if a line terminator is encountered. Recognized line terminator sequences are '\r', '\n' and "\r\n".

      Overrides:
      read in class BufferedReader
      Throws:
      IOException - if this reader is closed or another IOException occurs.
    • readLine

      public String readLine() throws IOException
      Returns the next line of text available from this reader. A line is represented by 0 or more characters followed by '\r', '\n', "\r\n" or the end of the stream. The returned string does not include the newline sequence.
      Overrides:
      readLine in class BufferedReader
      Returns:
      the contents of the line or null if no characters have been read before the end of the stream has been reached.
      Throws:
      IOException - if this reader is closed or another IOException occurs.
    • reset

      public void reset() throws IOException
      Resets this reader to the last marked location. It also resets the line count to what is was when this reader was marked. This implementation resets the source reader.
      Overrides:
      reset in class BufferedReader
      Throws:
      IOException - if this reader is already closed, no mark has been set or the mark is no longer valid because more than readlimit bytes have been read since setting the mark.
      See Also:
      mark(int), BufferedReader.markSupported()
    • setLineNumber

      public void setLineNumber​(int lineNumber)
      Sets the line number of this reader to the specified lineNumber. Note that this may have side effects on the line number associated with the last marked position.
      Parameters:
      lineNumber - the new line number value.
      See Also:
      mark(int), reset()
    • skip

      public long skip​(long charCount) throws IOException
      Skips charCount characters in this reader. Subsequent calls to read will not return these characters unless reset is used. This implementation skips charCount number of characters in the source reader and increments the line number count whenever line terminator sequences are skipped.
      Overrides:
      skip in class BufferedReader
      Returns:
      the number of characters actually skipped.
      Throws:
      IllegalArgumentException - if charCount < 0.
      IOException - if this reader is closed or another IOException occurs.
      See Also:
      mark(int), read(), reset()