El método mark() de la clase BufferedInputStream en Java se usa para marcar la posición actual en el flujo de entrada. El método Reset() de la misma clase BufferedInputStream se llama después del método mark(). Reset() fija la posición en la última posición marcada para que el mismo byte se pueda leer nuevamente.
Contrato general: el flujo de entrada de alguna manera guarda todos los bytes que se leyeron después de que se llamó al método mark() y devuelve los mismos bytes nuevamente cuando se llama al método reset(). Esta operación se realiza solo si markSupported() devuelve verdadero. Sin embargo, si los bytes que se leen antes de la llamada del método reset() son más que bytes de límite de lectura, entonces el flujo de entrada no requiere guardar ningún dato.
Sintaxis:
public void mark(int readlimit)
Anula: anula el método mark() de la clase FilterInputStream .
Parámetros: este método acepta un parámetro de límite de lectura 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.
Excepción: este método no arroja ninguna excepción.
Los siguientes programas ilustran el método mark() en la clase BufferedInputStream en el paquete IO:
Programa 1: asume la existencia del archivo “c:/demo.txt”.
// Java program to illustrate // BufferedInputStream mark() method import java.io.*; public class GFG { public static void main(String[] args) { // Create input stream 'demo.txt' // for reading containing text "GEEKS" FileInputStream inputStream = new FileInputStream( "c:/demo.txt"); // Convert inputStream to // bufferedInputStream BufferedInputStream buffInputStr = new BufferedInputStream( inputStream); // Read and print characters one by one System.out.println( "Char : " + (char)buffInputStr.read()); System.out.println( "Char : " + (char)buffInputStr.read()); System.out.println( "Char : " + (char)buffInputStr.read()); // Mark is set on the input stream buffInputStr.mark(0); System.out.println( "Char : " + (char)buffInputStr.read()); // Reset() is invoked buffInputStr.reset(); // Read and print characters System.out.println( "Char : " + (char)buffInputStr.read()); System.out.println( "Char : " + (char)buffInputStr.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 // BufferedInputStream.mark() method import java.io.*; public class GFG { public static void main(String[] args) { // Create input stream 'demo.txt' // for reading containing text // "GEEKSFORGEEKS" FileInputStream inputStream = new FileInputStream( "c:/demo.txt"); // Convert inputStream to // bufferedInputStream BufferedInputStream buffInputStr = new BufferedInputStream( inputStream); // Read and print characters one by one System.out.println( "Char : " + (char)buffInputStr.read()); System.out.println( "Char : " + (char)buffInputStr.read()); System.out.println( "Char : " + (char)buffInputStr.read()); System.out.println( "Char : " + (char)buffInputStr.read()); // Mark is set on the input stream buffInputStr.mark(0); System.out.println( "Char : " + (char)buffInputStr.read()); // Reset() is invoked buffInputStr.reset(); // read and print characters System.out.println( "Char : " + (char)buffInputStr.read()); System.out.println( "Char : " + (char)buffInputStr.read()); System.out.println( "Char : " + (char)buffInputStr.read()); System.out.println( "Char : " + (char)buffInputStr.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/BufferedInputStream.html#mark(int)