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étodo | Descripció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étodo | Descripció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étodo | Descripció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);
}
}
}