Líneas vacías de un fichero con un Stream
Una de las cosas buenas de la programación funcional, cuando se entiende, es la facilidad con la que permite resolver muchos problemas.
Hoy vamos a ver cómo podemos contar las líneas vacías de un fichero con un Stream mediante programación funcional. Así lo podremos comparar con el anterior artículo sobre cómo contar líneas vacías de un fichero con Java.
Abrir el fichero
Sección titulada «Abrir el fichero»Inicialmente vamos a realizar la apertura del fichero mediante un FileReader y un BufferedReader.
FileReader fr = new FileReader("resources/fichero.txt");BufferedReader bf = new BufferedReader(fr);Obtener el Stream
Sección titulada «Obtener el Stream»Ahora, sobre el BufferedReader, vamos a aplicar la programación funcional.
Una de las cosas que tenemos que saber de la programación funcional es que, de forma contraria a la programación imperativa, no existe el concepto de bucles.
Lo primero que haremos será obtener un Stream, que nos lo proporciona el método .lines().
bf.lines();ℹ️ El manejo de
Streamestá disponible a partir de Java 1.8. Tenlo en cuenta cuando estés compilando el programa.
El Stream es el elemento que contiene los datos del fichero y sobre el cual vamos a aplicar operaciones.
Filtrar líneas vacías
Sección titulada «Filtrar líneas vacías»La primera operación será obtener las líneas vacías. Para ello aplicaremos un filtro mediante el método .filter().
En este filtro utilizaremos un predicado con una expresión lambda.
l -> l.isEmpty()Esta expresión lambda indica que, por cada línea, se seleccionen aquellas que estén vacías.
Contar resultados
Sección titulada «Contar resultados»Por último, realizaremos una operación final para contar el número de elementos que devuelve el filtro. Esto lo hace el método .count().
long vacias = bf.lines() .filter(l -> l.isEmpty()) .count();Como puedes ver, mediante la programación funcional en Java podemos contar las líneas vacías de un fichero con un Stream con una única línea de código.
Descarga el código de Líneas vacías de un fichero con un Stream
Uso de la programación funcional en Java para poder contar el número de líneas vacías de un fichero con un Stream.