Ir al contenido

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.

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);

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 Stream está 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.

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.

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.

Foto de Víctor Cuervo

Víctor Cuervo

Programador, Arquitecto IT, álter ego de Línea de Código, amante de las tecnologías, generador de conocimiento y facilitador del aprendizaje.

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.

Descargar código