En el ejemplo Número de líneas de un fichero con Java veíamos como podíamos calcular el número de líneas que contenía el fichero leyendo el contenido del mismo. Hoy veremos otra forma alternativa de realizarlo, para ello vamos a calcular el número de líneas de un fichero con un Stream. Es decir, simplemente vamos a volcar el fichero sobre un BufferReader
y vamos a aprovecharnos de las capacidades del los Stream para saber cuántas líneas tiene el fichero. Esta es una nueva funcionalidad que viene con los Stream de Java 1.8 y que facilita la programación funcional..
Lo primero será acceder al fichero. Para ello vamos a utilizar un FileReader
sobre el path en el que se encuentre el fichero.
FileReader fr = new FileReader("resources/fichero.txt");
Siempre que estés accediendo a un fichero vas a tener que controlar las excepciones
FileNotFoundException
eIOException
. Así que no se te olvide utilizar una estructuratry-catch
con ellas.
Ahora que tenemos el FileReader creamos un BufferReader
a partir de él.
BufferedReader bf = new BufferedReader(fr);
Una vez que tengamos el BufferReader
es el punto en el cual no vamos a necesitar el recorrer las líneas para realizar el conteo del fichero, si no que lo que haremos será invocar al método .lines()
el cual nos devolverá el Stream. Sobre este Stream deberemos de invocar al método .count()
el cual contará directamente las líneas del Stream y por lo tanto las líneas del fichero.
System.out.println("El fichero tiene " + bf.lines().count() + " lineas");
De esta sencilla forma habremos conseguido obtener el número de líneas de un fichero con un Stream en Java.
Ah! Se me olvidaba de una cosa. No dejes de cerrar el BufferReader
una vez hayas terminado de utilizarlo. Para ello simplemente invoca al método .close
.
bf.close();
Una demostración de lo sencillo que es utilizar los elementos como los Stream y la programación funcional en Java. En este caso para calcular el número de filas de un fichero.