Saltar al contenido principal

Lectura de ficheros de texto

FileReader

La clase FileReader permite leer archivos de texto carácter por carácter. En su constructor podemos pasarle la ruta en un String o un objeto File.

Los principales métodos de la clase FileReader:

MétodoDescripción
int read()Lee un solo carácter del archivo y devuelve su valor en código ASCII. Si no hay más datos, devuelve -1.
int read(char[] cbuf, int offset, int length)Lee hasta length caracteres y los guarda en el array cbuf comenzando en el índice offset.
void close()Cierra el archivo y libera los recursos asociados.

Ejemplo:

import java.io.FileReader;
import java.io.IOException;

public class EjemploFileReader {
public static void main(String[] args) {
try (FileReader lector = new FileReader("ejemplo.txt")) {
int caracter;
while ((caracter = lector.read()) != -1) {
System.out.print((char) caracter);
}
} catch (IOException e) {
System.out.println("Error al leer el archivo.");
System.out.println(e);
}
}
}

BufferedReader

Si combinamos FileReader con BufferedReader podemos leer archivos de texto línea a línea, por ejemplo. En su constructor podemos pasarle un objeto FileReader.

Los principales métodos de la clase BufferedReader:

MétodoDescripción
String readLine()Lee una línea completa del archivo y devuelve una cadena de texto. Si no hay más datos, devuelve null.
boolean ready()Devuelve true si hay más caracteres disponibles para leer, false en caso contrario.
void close()Cierra el lector y libera los recursos asociados.

Ejemplo:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class LecturaArchivo {
public static void main(String[] args) {
try {
BufferedReader lector = new BufferedReader(new FileReader("ejemplo.txt"));
String linea;
while ((linea = lector.readLine()) != null) {
System.out.println(linea);
}
lector.close();
} catch (IOException e) {
System.out.println("Error al leer el archivo.");
System.out.println(e);
}
}
}

Scanner

La clase Scanner facilita la lectura de archivos, permitiendo separar datos por espacios o saltos de línea. En su constructor debemos indicarle un objeto de la clase File.

Los principales métodos de la clase Scanner:

MétodoDescripción
boolean hasNext()Comprueba si hay más datos disponibles en el archivo. Devuelve true si hay más datos, false si no.
boolean hasNextLine()Comprueba si hay otra línea disponible en el archivo.
String next()Lee el siguiente token (palabra separada por espacios) del archivo.
String nextLine()Lee una línea completa del archivo.
int nextInt()Lee el siguiente número entero del archivo.
double nextDouble()Lee el siguiente número decimal del archivo.
void close()Cierra el Scanner y libera los recursos asociados.

Ejemplo:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class EjemploScanner {
public static void main(String[] args) {
try {
File archivo = new File("ejemplo.txt");
Scanner lector = new Scanner(archivo);
while (lector.hasNextLine()) {
System.out.println(lector.nextLine());
}
lector.close();
} catch (FileNotFoundException e) {
System.out.println("Error: El archivo no fue encontrado.");
System.out.println(e);
}
}
}