
- Java.io - Home
- Java.io - BufferedInputStream
- Java.io - BufferedOutputStream
- Java.io - BufferedReader
- Java.io - BufferedWriter
- Java.io - ByteArrayInputStream
- Java.io - ByteArrayOutputStream
- Java.io - CharArrayReader
- Java.io - CharArrayWriter
- Java.io - Console
- Java.io - DataInputStream
- Java.io - DataOutputStream
- Java.io - File
- Java.io - FileDescriptor
- Java.io - FileInputStream
- Java.io - FileOutputStream
- Java.io - FilePermission
- Java.io - FileReader
- Java.io - FileWriter
- Java.io - FilterInputStream
- Java.io - FilterOutputStream
- Java.io - FilterReader
- Java.io - FilterWriter
- Java.io - InputStream
- Java.io - InputStreamReader
- Java.io - LineNumberInputStream
- Java.io - LineNumberReader
- Java.io - ObjectInputStream
- Java.io - ObjectInputStream.GetField
- Java.io - ObjectOutputStream
- io - ObjectOutputStream.PutField
- Java.io - ObjectStreamClass
- Java.io - ObjectStreamField
- Java.io - OutputStream
- Java.io - OutputStreamWriter
- Java.io - PipedInputStream
- Java.io - PipedOutputStream
- Java.io - PipedReader
- Java.io - PipedWriter
- Java.io - PrintStream
- Java.io - PrintWriter
- Java.io - PushbackInputStream
- Java.io - PushbackReader
- Java.io - RandomAccessFile
- Java.io - Reader
- Java.io - SequenceInputStream
- Java.io - SerializablePermission
- Java.io - StreamTokenizer
- Java.io - StringBufferInputStream
- Java.io - StringReader
- Java.io - StringWriter
- Java.io - Writer
- Java.io package Useful Resources
- Java.io - Discussion
Java - LineNumberReader Class
Introduction
The Java LineNumberReader class is a buffered character-input stream that keeps track of line numbers.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.
Class declaration
Following is the declaration for Java.io.LineNumberReader class −
public class LineNumberReader extends BufferedReader
Field
Following are the fields for Java.io.LineNumberReader class −
protected Object lock − This is the object used to synchronize operations on this stream.
Class constructors
Sr.No. | Constructor & Description |
---|---|
1 |
LineNumberReader(Reader in) This creates a new line-numbering reader, using the default input-buffer size. |
2 |
LineNumberReader(Reader in, int sz) This creates a new line-numbering reader, reading characters into a buffer of the given size. |
Class methods
Sr.No. | Method & Description |
---|---|
1 |
int getLineNumber()
This method gets the current line number. |
2 |
void mark(int readAheadLimit)
This method mark the present position in the stream. |
3 |
int read()
This method read a single character. |
4 |
int read(char[] cbuf, int off, int len)
This method read characters into a portion of an array. |
5 |
String readLine()
This method read a line of text. |
6 |
void reset()
This method reset the stream to the most recent mark. |
7 |
void setLineNumber(int lineNumber)
This method set the current line number. |
8 |
long skip(long n)
This method skip characters. |
Methods inherited
This class inherits methods from the following classes −
- Java.io.BufferedReader
- Java.io.Reader
- Java.io.Object
Example - Reading a File with Line Numbers
The following example shows the usage of Java LineNumberReader getLineNumber() method. This example reads a text file line by line and prints the current line number.
LineNumberReaderDemo.java
package com.tutorialspoint; import java.io.FileReader; import java.io.IOException; import java.io.LineNumberReader; public class LineNumberReaderDemo { public static void main(String[] args) { try { // Create a LineNumberReader from a file LineNumberReader lnr = new LineNumberReader(new FileReader("example.txt")); String line; while ((line = lnr.readLine()) != null) { System.out.println("Line " + lnr.getLineNumber() + ": " + line); } lnr.close(); } catch (IOException e) { e.printStackTrace(); } } }
Output(if example.txt contains multiple lines.)
Let us compile and run the above program, this will produce the following result−
Line 1: Hello Line 2: World Line 3: Java Programming
Explanation
LineNumberReader reads lines from "example.txt".
readLine() reads a line, and getLineNumber() returns the current line number.
The line number starts at 1 and increments automatically.
Example - Marking and Resetting a Line
The following example shows the usage of Java LineNumberReader mark(int readAheadLimit) method. This example demonstrates marking a position in the stream, reading some lines, and then using reset() to go back to the marked position.
LineNumberReaderDemo.java
package com.tutorialspoint; import java.io.IOException; import java.io.LineNumberReader; import java.io.StringReader; public class LineNumberReaderDemo { public static void main(String[] args) { String text = "First Line\nSecond Line\nThird Line"; LineNumberReader lnr = new LineNumberReader(new StringReader(text)); try { System.out.println("Reading first line: " + lnr.readLine()); // Mark the current position lnr.mark(50); System.out.println("Marked at Line Number: " + lnr.getLineNumber()); System.out.println("Reading second line: " + lnr.readLine()); System.out.println("Reading third line: " + lnr.readLine()); // Reset to the marked position lnr.reset(); System.out.println("After reset, current line: " + lnr.readLine()); System.out.println("Line Number after reset: " + lnr.getLineNumber()); lnr.close(); } catch (IOException e) { e.printStackTrace(); } } }
Output(if example.txt contains "Hello")
Let us compile and run the above program, this will produce the following result−
Reading first line: First Line Marked at Line Number: 1 Reading second line: Second Line Reading third line: Third Line After reset, current line: Second Line Line Number after reset: 2
Explanation
Reads the first line (First Line).
Calls mark(50), saving the position at line 1.
Reads two more lines (Second Line and Third Line).
Calls reset(), which returns to the marked position.
Reads again from the marked line (Second Line), confirming that reset() worked.
Example - Reading Characters One by One
The following example shows the usage of Java LineNumberReader read() method. This example reads characters from a LineNumberReader one at a time and prints their ASCII values along with the current line number.
LineNumberReaderDemo.java
package com.tutorialspoint; import java.io.IOException; import java.io.LineNumberReader; import java.io.StringReader; public class LineNumberReaderDemo { public static void main(String[] args) { String text = "Hello\nWorld\nJava"; LineNumberReader lnr = new LineNumberReader(new StringReader(text)); try { int character; while ((character = lnr.read()) != -1) { // Read one character at a time System.out.println("Character: " + (char) character + ", Line Number: " + lnr.getLineNumber()); } lnr.close(); } catch (IOException e) { e.printStackTrace(); } } }
Output
Let us compile and run the above program, this will produce the following result−
Character: H, Line Number: 0 Character: e, Line Number: 0 Character: l, Line Number: 0 Character: l, Line Number: 0 Character: o, Line Number: 0 Character: , Line Number: 1 Character: W, Line Number: 1 Character: o, Line Number: 1 Character: r, Line Number: 1 Character: l, Line Number: 1 Character: d, Line Number: 1 Character: , Line Number: 2 Character: J, Line Number: 2 Character: a, Line Number: 2 Character: v, Line Number: 2 Character: a, Line Number: 2
Explanation
The read() method reads characters one at a time.
Line number starts at 0 and increments when a newline (\n) is encountered.
The program prints the character and its corresponding line number.