0% encontró este documento útil (0 votos)
13 vistas5 páginas

Uso de readLine() en Java

Cargado por

palermo jimenez
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
13 vistas5 páginas

Uso de readLine() en Java

Cargado por

palermo jimenez
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

La función readLine en Java es un método de la clase BufferedReader que se utiliza

para leer texto línea por línea desde una fuente de entrada, como un archivo, la entrada
estándar (teclado), o un flujo de datos (InputStream). Es especialmente útil para leer
datos estructurados o no estructurados que están separados por saltos de línea.

1. Conceptos básicos

Sintaxis del método


java
Copiar código
public String readLine() throws IOException

• Retorno: Devuelve una línea de texto como una cadena (String). Si el final de la
fuente de entrada se alcanza, devuelve null.
• Excepción: Puede lanzar una IOException si ocurre algún error de entrada/salida.

Ejemplo básico: Leer líneas desde un archivo


java
Copiar código
import [Link].*;

public class LeerLineas {


public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new
FileReader("[Link]"))) {
String linea;
while ((linea = [Link]()) != null) { // Leer línea
por línea
[Link](linea);
}
} catch (IOException e) {
[Link]();
}
}
}

Explicación:

1. BufferedReader se usa para mejorar la eficiencia de lectura.


2. readLine() lee una línea completa hasta encontrar un salto de línea (\n) o el final
del archivo.

2. Leer desde la entrada estándar

Ejemplo: Leer desde el teclado


java
Copiar código
import [Link].*;
public class LeerTeclado {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new
InputStreamReader([Link]))) {
[Link]("Escribe una línea (o 'salir' para
terminar):");
String linea;
while (!(linea = [Link]()).equalsIgnoreCase("salir"))
{
[Link]("Leído: " + linea);
}
} catch (IOException e) {
[Link]();
}
}
}

Explicación:

• InputStreamReader convierte los bytes de la entrada estándar ([Link]) en


caracteres.
• BufferedReader optimiza la lectura.
• El programa sigue leyendo hasta que el usuario ingrese "salir".

3. Leer un archivo completo en una sola operación

Aunque readLine() se utiliza normalmente en un bucle, también puedes leer todas las
líneas de un archivo utilizando un enfoque acumulativo.

Ejemplo: Leer todo el archivo


java
Copiar código
import [Link].*;
import [Link];
import [Link];

public class LeerTodoArchivo {


public static void main(String[] args) {
List<String> lineas = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new
FileReader("[Link]"))) {
String linea;
while ((linea = [Link]()) != null) {
[Link](linea); // Agregar línea a la lista
}
} catch (IOException e) {
[Link]();
}

// Imprimir todo el contenido


[Link]([Link]::println);
}
}
4. Procesar archivos con delimitadores personalizados

Aunque readLine() solo detecta saltos de línea, puedes usarlo junto con métodos como
split para dividir líneas en base a delimitadores.

Ejemplo: Leer un archivo CSV


java
Copiar código
import [Link].*;

public class LeerCSV {


public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new
FileReader("[Link]"))) {
String linea;
while ((linea = [Link]()) != null) {
String[] columnas = [Link](","); // Divide la
línea por comas
for (String columna : columnas) {
[Link](columna + " | ");
}
[Link]();
}
} catch (IOException e) {
[Link]();
}
}
}

5. Leer archivos grandes eficientemente

Si trabajas con archivos muy grandes, readLine() es ideal porque permite procesar una
línea a la vez sin cargar todo el archivo en memoria.

Ejemplo: Contar líneas no vacías


java
Copiar código
import [Link].*;

public class ContarLineas {


public static void main(String[] args) {
int contador = 0;
try (BufferedReader br = new BufferedReader(new
FileReader("[Link]"))) {
String linea;
while ((linea = [Link]()) != null) {
if (![Link]().isEmpty()) { // Ignorar líneas
vacías
contador++;
}
}
} catch (IOException e) {
[Link]();
}
[Link]("Número total de líneas no vacías: " +
contador);
}
}

6. Uso avanzado: Procesar con Streams en Java 8+

readLine() se puede combinar con Streams para aprovechar el procesamiento


funcional.

Ejemplo: Procesar líneas con filtros


java
Copiar código
import [Link].*;
import [Link];

public class ProcesarConStream {


public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new
FileReader("[Link]"))) {
Stream<String> lineas = [Link](); // Convierte a Stream
long lineasValidas = lineas
.filter(linea ->
![Link]().isEmpty()) // Filtrar líneas vacías
.count();
[Link]("Número de líneas válidas: " +
lineasValidas);
} catch (IOException e) {
[Link]();
}
}
}

Errores comunes al usar readLine()

1. Archivo no encontrado:
o Asegúrate de que el archivo existe y que la ruta es correcta.
o Usa rutas absolutas o asegúrate de que el archivo esté en el directorio de
ejecución.
2. Excepciones sin manejar:
o readLine() lanza IOException, por lo que es necesario manejarla con un
bloque try-catch.
3. No cerrar recursos:
o Siempre cierra los recursos utilizando try-with-resources.
4. Entradas vacías o nulas:
o Asegúrate de verificar si readLine() devuelve null para evitar errores.
7. Combinación con otros patrones de lectura

Puedes usar readLine() en conjunto con otras técnicas para realizar tareas más
avanzadas, como analizar logs o datos en tiempo real.

Ejemplo avanzado: Leer un archivo de configuración


java
Copiar código
import [Link].*;
import [Link];
import [Link];

public class LeerConfiguracion {


public static void main(String[] args) {
Map<String, String> configuracion = new HashMap<>();

try (BufferedReader br = new BufferedReader(new


FileReader("[Link]"))) {
String linea;
while ((linea = [Link]()) != null) {
if ([Link]().isEmpty() || [Link]("#")) {
continue; // Ignorar líneas vacías o comentarios
}
String[] partes = [Link]("=", 2); // Dividir
clave y valor
[Link](partes[0].trim(), partes[1].trim());
}
} catch (IOException e) {
[Link]();
}

// Mostrar configuración cargada


[Link]((clave, valor) ->
[Link](clave + ": " + valor));
}
}

Resumen

El método readLine() es versátil y puede utilizarse en casos simples (lectura básica) y


complejos (procesamiento de archivos grandes, integración con Streams, y más). Su uso
depende del contexto y las necesidades del programa.

También podría gustarte