Stream a file line by line with useLines

Kotlin
import java.io.File

fun forEachLine(path: String, action: (lineNo: Int, line: String) -> Unit) {
    var index = 0
    File(path).useLines { lines ->
        lines.forEach { line ->
            index++
            action(index, line)
        }
    }
}

fun countMatches(path: String, needle: String): Int {
    var count = 0
    File(path).useLines { lines -> lines.filter { it.contains(needle) }.forEach { count++ } }
    return count
}