El método reset() de la clase BufferedInputStream en Java se utiliza para restablecer la posición del flujo a la posición en el momento en que se llamó por última vez al método mark. Se usa con la combinación del método mark() de la misma clase.
Contrato General:
Hay dos casos:
- Si se admiten mark() y reset(), es decir, si markSupported devuelve verdadero,
- Se puede lanzar una IOException si no se llama a mark() desde la creación del flujo de entrada o los bytes que se leen desde el flujo de entrada desde la última llamada del método mark() es mayor que el argumento para marcar el método en el último llamar.
- En caso de que no se lance una IOException, el flujo de entrada se restablece a un estado tal que todos los bytes que se leen después de la llamada más reciente de mark() se proporcionan nuevamente a las personas que llaman subsiguientemente a read(). Esto es seguido por los bytes que tendrían en la llamada reset().
- Si mark() y reset() no son compatibles, es decir, si markSupported devuelve falso,
- Llamar al método reset() podría arrojar una IOException.
- En caso de que no se produzca una IOException, el flujo de entrada se restablece a un estado fijo que depende del tipo particular del flujo de entrada. Los bytes proporcionados a los llamadores posteriores de read() dependen del tipo particular del flujo de entrada.
Sintaxis:
public void reset()
Anulaciones: el método anula la clase de reinicio en FilterInputStream.
Parámetros: Este método no acepta ningún parámetro.
Valor devuelto : este método no devuelve ningún valor.
Excepción: este método lanza IOException si esta secuencia no se ha marcado o la marca se ha invalidado o la secuencia de entrada se ha cerrado mediante la invocación del método close() o si se produce un error de E/S.
Los siguientes programas ilustran el método reset() en la clase BufferedInputStream en el paquete IO:
Programa 1: Suponga la existencia del archivo “c:/demo.txt”.
// Java program to illustrate // BufferedInputStream reset() 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()); System.out.println( "reset() called"); // Reset() is invoked buffInputStr.reset(); // Read and print characters System.out.println( "Char : " + (char)buffInputStr.read()); System.out.println( "Char : " + (char)buffInputStr.read()); } }
Programa 2: Suponga la existencia del archivo “c:/demo.txt”.
// Java program to illustrate // BufferedInputStream reset() 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()); System.out.println( "reset() called"); // 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()); } }
Referencias:
https://docs.oracle.com/javase/10/docs/api/java/io/BufferedInputStream.html#reset()