El método mark() de la clase BufferedReader en Java se usa para marcar la posición actual en el flujo del lector de búfer. El método reset() de la misma clase BufferedReader también se llama posteriormente, después de llamar al método mark(). El método reset() fija la posición en la última posición marcada para que el mismo byte pueda leerse nuevamente.
Sintaxis:
public void mark(int readAheadLimit) throws IOException
Anula: anula el método mark() de la clase Reader .
Parámetros: este método acepta readAheadLimit de tipo Integer, que representa el límite máximo de bytes que se pueden leer antes de que la posición de la marca se vuelva inválida.
Valor devuelto : este método no devuelve ningún valor.
Excepciones: este método puede generar dos tipos de excepciones.
- IllegalArgumentException : esta excepción se lanza si el parámetro pasado readAheadLimit es menor que cero.
- IOException : esta excepción se produce si se produce un error de E/S.
Los siguientes programas ilustran el método mark() en la clase BufferedReader en el paquete IO.
Programa 1: Suponga la existencia del archivo “c:/demo.txt”.
// Java program to illustrate // BufferedReader mark() method import java.io.*; public class GFG { public static void main(String[] args) { // Read the stream 'demo.txt' // for containing text "GEEKS" FileReader fileReader = new FileReader( "c:/demo.txt"); // Convert fileReader to // bufferedReader BufferedReader buffReader = new BufferedReader( fileReader); // Read and print characters // one by one System.out.println( "Char : " + (char)buffReader.read()); System.out.println( "Char : " + (char)buffReader.read()); System.out.println( "Char : " + (char)buffReader.read()); // Mark is set on the stream buffReader.mark(0); System.out.println( "Char : " + (char)buffReader.read()); // Reset() is invoked buffReader.reset(); // Read and print characters System.out.println( "Char : " + (char)buffReader.read()); System.out.println( "Char : " + (char)buffReader.read()); } }
Char : G Char : E Char : E Char : K Char : K Char : S
Programa 2: Suponga la existencia del archivo “c:/demo.txt”.
// Java program to illustrate // BufferedReader mark() method import java.io.*; public class GFG { public static void main(String[] args) { // Read the stream 'demo.txt' // containing text "GEEKSFORGEEKS" FileReader fileReader = new FileReader( "c:/demo.txt"); // Convert fileReader to // bufferedReader BufferedReader buffReader = new BufferedReader( fileReader); // Read and print characters // one by one System.out.println( "Char : " + (char)buffReader.read()); System.out.println( "Char : " + (char)buffReader.read()); System.out.println( "Char : " + (char)buffReader.read()); System.out.println( "Char : " + (char)buffReader.read()); // Mark is set on the stream buffReader.mark(0); System.out.println( "Char : " + (char)buffReader.read()); // Reset() is invoked buffReader.reset(); // read and print characters System.out.println( "Char : " + (char)buffReader.read()); System.out.println( "Char : " + (char)buffReader.read()); System.out.println( "Char : " + (char)buffReader.read()); System.out.println( "Char : " + (char)buffReader.read()); } }
Char : G Char : E Char : E Char : K Char : S Char : S Char : F Char : O Char : R
Referencias:
https://docs.oracle.com/javase/10/docs/api/java/io/BufferedReader.html#mark(int)