Formación informática

Java | Joomla | MySQL

Curso de Java – Tema 15: clase BufferedReader

Máquina de escribir

Para acceder a su definición oficial en la API de Java 8 tenemos que pulsar sobre este enlace.

¿Qué es y para qué vale?

Es una clase pública que permite crear instancias u objetos de la clase BufferedReader para leer texto de una secuencia de entrada de caracteres, almacenando en el búfer caracteres de tal forma que se realice la lectura eficiente de caracteres, matrices y líneas. Además, esta clase está sincronizada lo cual es sinónimo de seguridad al utilizarla en programación concurrente.

Se usa tanto para leer el contenido de archivos de texto como para detectar lo que se escribe a través de línea de comandos o de otras clases. Aquí vamos a ver cómo se usa la clase para introducir lo que se teclea por línea de comandos. Más adelante, veremos cómo se usa para leer el contenido de archivos de texto y otros usos.

La clase contiene dos constructores:

BufferedReader(Reader in) 
BufferedReader(Reader in, int sz)

El primero únicamente requiere el flujo de caracteres que utilizará;, mientras que en el segundo se puede especificar el tamaño del buffer que manejará. De presentarse el caso de que durante la ejecución del programa suceda que el tamaño del buffer que se haya especificado se quede corto para la cantidad de caracteres que tiene el flujo, no es problema, puesto que la misma instancia de BufferedReader se encarga de redimensionar el buffer al tamaño que sea necesario.

¿Cómo se usa para leer desde la línea de comandos?

Esta es una solución alternativa a usar la clase Scanner. Usa la que mejor comprendas de las dos o te sea más sencillo aplicar.

Para instanciar la clase BufferedReader es obligatorio tener el flujo de caracteres del cual nuestra instancia tomará hará las lecturas. Esto se consigue mediante la clase InputStreamReader mediante la cual realizamos una instancia:

InputStreamReader ins = new InputStreamReader(System.in);

El primer paso es importar las tres clases:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

A continuación se crea un objeto InputStreamReader:

InputStreamReader isr = new InputStreamReader(System.in);

Después se crea un objeto de la clase BufferedReader encargado de leer el flujo capturado en el objeto anterior, que nos devuelve un objeto de tipo String:

BufferedReader br = new BufferedReader(isr);

Por último, se introduce en una variable el contenido del buffer, teniendo que usar los métodos de cada clase de tipo primitivo para realizar la conversión, puesto que el objeto anterior nos devuelve un objeto de tipo String. Algunos ejemplos son:

String variable_string = br.readLine();
int variable_entera = Integer.parseInt(br.readLine());
float variable_float = Float.parseFloat(br.readLine());
double variable_double = Double.parseDouble(br.readLine());

Métodos

La siguiente tabla contiene los más usados habitualmente:

Método

Tipo de Retorno

Descripción

mark(int limiteCaracteres)

void

Marca la posición actual en la que se encuentre el apuntador en el flujo, el parámetro del método indica el número de caracteres que pueden ser leídos mientras se mantenga esta marca.

read()

void

Lee un solo carácter del flujo, lo curioso de este método es que retorna un número entero, ¿Por qué? Más adelante la respuesta.

readLine()

String

Lee una línea completa de texto.

ready()

boolean

Este método es utilizado para saber si aún hay caracteres en el flujo para ser leídos, detalles más adelante.

reset()

void

Reinicia el flujo hasta la marca más reciente que se haya hecho.

skip(long n)

long

Mueve el apuntador del flujo las posiciones necesarios para evitar la cantidad de caracteres de n.

Tratamiento de excepciones

Hay que tener en cuenta que si no se pone un dato correcto nos saltará una excepción IOException, teniendo que hacer obligatoriamente un tratamiento adecuado de ellas porque Java no permite la ejecución de un aplicación sin este tratamiento. Lo más sencillo es envolver la instrucción de readline con un bloque try catch en el que se mostrará el mensaje del error:

try 	{
		frase = lector.readLine();
} catch (IOException ex) {
		System.out.println(ex.getMessage());
		}	
Curso de Java – Tema 14: clase Scanner <- | -> Curso de Java – Tema 16: Clase JOptionPane
Curso de Java - Índice ejercicios nivel básico

Escribir un comentario

Aunque los comentarios no expresan la opinión del administrador del sitio web, éste si que tiene una responsabilidad legal sobre lo que aparece. Por lo tanto, habrá una labor de moderación de los mensajes. No se permitirán mensajes ofensivos ni publicidad


Código de seguridad
Refescar

Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-Ley 13/2012, de 30 de marzo. Si continúa navegando consideramos que acepta el uso de cookies. . Más información