Open In App

Java.io.LineNumberReader class in Java

Improve
Improve
Like Article
Like
Save
Share
Report

A buffered character-input stream that keeps track of line numbers. This class defines methods setLineNumber(int) and getLineNumber() for setting and getting the current line number respectively.

  • By default, line numbering begins at 0. This number increments at every line terminator as the data is read, and can be changed with a call to setLineNumber(int).
  • Note however, that setLineNumber(int) does not actually change the current position in the stream; it only changes the value that will be returned by getLineNumber().
  • A line is considered to be terminated by any one of a line feed (‘\n’), a carriage return (‘\r’), or a carriage return followed immediately by a linefeed.

Constructors :

  • LineNumberReader(Reader in) : Create a new line-numbering reader, using the default input-buffer size.
  • LineNumberReader(Reader in, int sz) : Create a new line-numbering reader, reading characters into a buffer of the given size.

Methods :

  • int getLineNumber() : Get the current line number.
    Syntax :public int getLineNumber()
    Returns:
    The current line number
  • void mark(int readAheadLimit) : Mark the present position in the stream.Subsequent calls to reset() will attempt to reposition the stream to this point, and will also reset the line number appropriately.
    Syntax :public void mark(int readAheadLimit)
              throws IOException
    Parameters:
    readAheadLimit - Limit on the number of characters that may be read 
    while still preserving the mark. After reading this many characters, 
    attempting to reset the stream may fail.
    Throws:
    IOException
  • int read() : Read a single character.Line terminators are compressed into single newline (‘\n’) characters. Whenever a line terminator is read the current line number is incremented.
    Syntax :public int read()
             throws IOException
    Returns:
    The character read, or -1 if the end of the stream has been reached
    Throws:
    IOException
  • int read(char[] cbuf, int off, int len) : Read characters into a portion of an array.Whenever a line terminator is read the current line number is incremented.
    Syntax :public int read(char[] cbuf,
           int off,
           int len)
             throws IOException
    Parameters:
    cbuf - Destination buffer
    off - Offset at which to start storing characters
    len - Maximum number of characters to read
    Returns:
    The number of bytes read, or -1 if the end of the stream has already been reached
    Throws:
    IOException
  • String readLine() : Read a line of text.Whenever a line terminator is read the current line number is incremented.
    Syntax :public String readLine()
                    throws IOException
    Returns:
    A String containing the contents of the line, not including any line 
    termination characters, or null if the end of the stream has been reached
    Throws:
    IOException
  • void reset() : Reset the stream to the most recent mark.
    Syntax :public void reset()
               throws IOException
    Throws:
    IOException
  • void setLineNumber(int lineNumber) : Set the current line number.
    Syntax :public void setLineNumber(int lineNumber)
    Parameters:
    lineNumber - An int specifying the line number
  • long skip(long n) : Skip characters.
    Syntax :public long skip(long n)
              throws IOException
    Parameters:
    n - The number of characters to skip
    Returns:
    The number of characters actually skipped
    Throws:
    IOException
    IllegalArgumentException

Program :




//Java program demonstrating LineNumberReader methods
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
class LineNumberReaderDemo
{
    public static void main(String[] args) throws IOException 
    {
        FileReader fr = new FileReader("file.txt");
        LineNumberReader lnr = new LineNumberReader(fr);
        char c[] = new char[20];
  
        //illustrating setLineNumber()
        lnr.setLineNumber(0);
          
        //illustrating set
        System.out.println(lnr.getLineNumber());
          
        //illustrating markSupported() method
        if(lnr.markSupported())
        {
            System.out.println("mark() method is supported");
            //illustrating mark method
            lnr.mark(100);
        }
          
        /*File Contents
        * This is first line
        this is second line
        This is third line
        */
          
        //skipping 19 characters
        lnr.skip(19);
  
        //illustrating ready() method
        if(lnr.ready())
        {
            //illustrating readLine() method
            System.out.println(lnr.readLine());
  
            //illustrating read(char c[],int off,int len)
            lnr.read(c);
            for (int i = 0; i <20 ; i++)
            {
                System.out.print(c[i]);
            }
              
            //illustrating reset() method
            lnr.reset();
              
            for (int i = 0; i <18 ; i++)
            {
                //illustrating read() method
                System.out.print((char)lnr.read());
            }
            int ch;
              
            //illustrating read() method
            System.out.println(lnr.readLine());
            while((ch = lnr.read())==1)
                System.out.print((char)ch);
        }
          
        //close the stream
        lnr.close();
    }
}


Output :

0
mark() method is supported
this is second line
This is third line
This is first line


Last Updated : 12 Sep, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads