Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

Inquietud con terminos

Hola buenas tardes, me gustaría que me aclararan de una forma simple y sencilla en que consisten y que significan los términos: fileInputStream , inputStreamReader y bufferedReader

Es que me confundí un poco con ellos. Muchas gracias estaré pendiente :D

1 respuesta
solución!

Hola Stefania, espero que estés bien.

Estas son clases que pertenecen al paquetejava.oi utilizadas para trabajar con archivos de tipo texto.

Los datos contenidos en estos archivos de tipo texto deben convertirse en flujos de bytes y transferidos a algún lugar, como un archivo,

por ejemplo.

  • Texto >>> Bytes >>> Archivo

Los flujos de bytes se definen con el uso de dos jerarquías de clases, en la parte superior hay dos clases abstractas:

InputStream que describe los flujos de entrada de bytes y OutputStream.

FileInputStream es una de las varias subclases concretas responsables del flujo de entrada para la lectura de un archivo:

FileInputStream fInputStream = new FileInputStream(new File(“C:\nombreArchivo.txt”));
//FileInputStream(String nombreArchivo) 
//A váriavel nombreArchivo define o caminho do arquivo desejado abrir.

FileInputStream busca el archivo en el directorio en el que se invocó JVM y alternativamente, se puede utilizar una ruta absoluta.

La traducción de los bytes con el encoding dado al respectivo código Unicode para recuperar un carácter que puede usar uno o más

bytes es tarea de la clase InputStreamReader, es decir, escribe el decodificador.

class Prueba {
        public static void main(String[] args) throws IOException {
            InputStream inputStream = new FileInputStream("archivo.txt");
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            int i = inputStreamReader.read();
        }
    }

La clase Reader lee en trozos utilizando el búfer para evitar realizar muchas llamadas al sistema operativo.

  • El tamaño del búfer se puede configurar por el constructor.

Y esa la composición de clases es conocida como Decorator Pattern: Decorator Pattern

class Prueba {
        public static void main(String[] args) throws IOException {
            InputStream inputStream = new FileInputStream("archivo.txt");
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

            String s = bufferedReader.readLine(); // primeira linha

            while (s != null) {
                System.out.println(s);
                s = bufferedReader.readLine();
            }

            bufferedReader.close();
        }
    }
  • Lectura de la primera línea del archivo;
  • El método readline devuelve la línea leída y cambia el cursor a la siguiente línea;
  • Si el método llega al final del Reader (en este ejemplo, final del archivo), devuelve null;
  • Bucle creado para leer el archivo completo;

Ecordar que el paquete java.io tiene varios métodos que lanzan IOException del tipo checked - que obliga a tratarla o declararla.

Espero que haya ayudado. Más dudas, me aciones para que hablemos. =)

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios.