Resumen: leer el contenido de un archivo con java, línea a línea, usando las clases:
- FileReader
- BufferedReader
- IOException
- StringBuilder
Vamos a leer un archivo de texto con Java, línea a línea, poniendo cada línea en un StringBuilder.
Nota: mira mi otro post para saber cómo escribir en un archivo de texto con Java.
Leer archivo de texto con Java
Para leer el contenido creamos un FileReader
indicando el nombre del archivo.
Después, creamos un BufferedReader
pasando el FileReader
creado anteriormente.
Cuando tenemos una instancia de BufferedReader
podemos llamar al método nextLine
que devuelve la siguiente línea de texto del archivo.
Con la línea podemos trabajar, o ir concatenándola. Yo usaré un StringBuilder
con su método append
.
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
/*
Leer el contenido de un archivo con Java
https://parzibyte.me/blog
*/
class Main {
public static void main(String[] args) {
String nombreArchivo = "ejemplo.txt";
FileReader fileReader = null;
BufferedReader bufferedReader = null;
try {
fileReader = new FileReader(nombreArchivo);
bufferedReader = new BufferedReader(fileReader);
StringBuilder stringBuilder = new StringBuilder("");
String linea;
while ((linea = bufferedReader.readLine()) != null) {
// Lee línea por línea, omitiendo los saltos de línea
stringBuilder.append(linea + "\n");
}
System.out.println("Contenido: " + stringBuilder.toString());
} catch (IOException e) {
System.out.println("Excepción leyendo archivo: " + e.getMessage());
} finally {
try {
if (fileReader != null)
fileReader.close();
if (bufferedReader != null)
bufferedReader.close();
} catch (IOException e) {
System.out.println("Excepción cerrando: " + e.getMessage());
}
}
}
}
Hola mundo
Soy el contenido del archivo
Programando en Java desde parzibyte.me
Todo esto puede generar una IOException
, por eso es que se atrapa en el catch
del try
.
Al finalizar la operación, haya sido exitosa o no, hay que cerrar el FileReader
y el BufferedReader
que, irónicamente, también pueden generar una IOException
. Comprobamos si son distintos de null para evitar una NullPointerException
.
Sé que con versiones nuevas de Java esto es más corto, pero quería poner una versión que funcione con todas las versiones de Java.