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
}