Java.io.LineNumberReader class in Java
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
Contact Us