
- 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 - BufferedReader reset() method
Description
The Java BufferedReader reset() method resets the stream to the most recent mark set by the mark(int readAheadLimit) method. If the mark() method was not called before reset(), or if the read limit specified in mark(int readAheadLimit) has been exceeded, calling reset() will throw an IOException.
Declaration
Following is the declaration for java.io.BufferedReader.ready() method.
public void reset()
Parameters
NA
Return Value
This method does not return any value.
Exception
IOException− If the stream is never been marked, or the mark has become invalid.
Example - Using a BufferedReader reset() method
The following example shows the usage of BufferedReader reset() method.
BufferedReaderDemo.java
package com.tutorialspoint; import java.io.BufferedReader; import java.io.StringReader; public class BufferedReaderDemo { public static void main(String[] args) throws Exception { String s ="ABCDE"; StringReader sr = null; BufferedReader br = null; try { sr = new StringReader(s); // create new buffered reader br = new BufferedReader(sr); // reads and prints BufferedReader System.out.println((char)br.read()); System.out.println((char)br.read()); // mark invoked at this position br.mark(0); System.out.println("mark() invoked"); System.out.println((char)br.read()); System.out.println((char)br.read()); // reset() repositioned the stream to the mark br.reset(); System.out.println("reset() invoked"); System.out.println((char)br.read()); System.out.println((char)br.read()); } catch (Exception e) { // exception occurred. e.printStackTrace(); } finally { // releases any system resources associated with the stream if(sr!=null) sr.close(); if(br!=null) br.close(); } } }
Output
Let us compile and run the above program, this will produce the following result −
A B mark() invoked C D reset() invoked C D
Example - Resetting the Reader to Re-read Content
The following example shows the usage of BufferedReader reset() method.
BufferedReaderDemo.java
package com.tutorialspoint; import java.io.BufferedReader; import java.io.IOException; import java.io.StringReader; public class BufferedReaderDemo { public static void main(String[] args) { String input = "Line 1: Java\nLine 2: BufferedReader\nLine 3: reset() Example"; // Initialize BufferedReader with a StringReader try (BufferedReader reader = new BufferedReader(new StringReader(input))) { // Read and print the first line System.out.println("First read:"); System.out.println(reader.readLine()); // Mark the current position in the stream reader.mark(100); // Allow up to 100 characters to be read before reset becomes invalid // Read the next line System.out.println("Second read:"); System.out.println(reader.readLine()); // Reset the reader to the marked position reader.reset(); // Re-read the line after reset System.out.println("Re-read after reset:"); System.out.println(reader.readLine()); } catch (IOException e) { System.err.println("An error occurred: " + e.getMessage()); } } }
Output
Let us compile and run the above program, this will produce the following result −
First read: Line 1: Java Second read: Line 2: BufferedReader Re-read after reset: Line 2: BufferedReader
Explanation
The BufferedReader reads the input string line by line.
The mark(100) method marks the position after reading the first line, allowing up to 100 characters to be read before the mark becomes invalid.
After reading the second line, the reset() method is called to return the reader to the marked position.
The second line is re-read after resetting the stream.
Example - Resetting the Reader to Read a Specific Portion of the Input Again
The following example shows the usage of BufferedReader ready() method.
BufferedReaderDemo.java
package com.tutorialspoint; import java.io.BufferedReader; import java.io.IOException; import java.io.StringReader; public class BufferedReaderDemo { public static void main(String[] args) { String input = "1234567890"; // Initialize BufferedReader with a StringReader try (BufferedReader reader = new BufferedReader(new StringReader(input))) { char[] buffer = new char[5]; // Mark the starting position reader.mark(10); // Allow up to 10 characters to be read before mark is invalid // Read the first 5 characters reader.read(buffer, 0, 5); System.out.println("First read: " + new String(buffer)); // Reset to the marked position reader.reset(); // Re-read the same 5 characters after reset reader.read(buffer, 0, 5); System.out.println("Re-read after reset: " + new String(buffer)); } catch (IOException e) { System.err.println("An error occurred: " + e.getMessage()); } } }
Output
Let us compile and run the above program, this will produce the following result −
First read: 12345 Re-read after reset: 12345
Explanation
The BufferedReader reads a string of digits ("1234567890").
The mark(10) method marks the starting position in the stream, allowing up to 10 characters to be read before the mark becomes invalid.
The first 5 characters are read into a buffer, and the result is printed.
The reset() method resets the stream to the marked position, allowing the same 5 characters to be re-read.
The second read produces the same result as the first.
Key Points About reset()
Mark Requirement− You must call mark(int readAheadLimit) before using reset(), or an IOException will be thrown.
Mark Expiry− The readAheadLimit specified in mark() determines how many characters can be read before the mark becomes invalid.
Use Cases− The reset() method is useful for re-reading specific portions of input without reinitializing the stream.
These examples demonstrate how reset() works in conjunction with mark() to allow re-reading input efficiently.