Функция forEachLine

Функция forEachLine выполняет построчное чтение файла и обработку каждой прочитанной строки с помощью callback-функции. Принимает параметр charset для указания кодировки файла (по умолчанию используется UTF-8) и callback-функцию, которая будет вызвана для каждой строки файла.

Импорт

kotlinimport java.io.File

Синтаксис

kotlinfun forEachLine(charset: Charset = Charsets.UTF_8, action: (String) -> Unit)

Пример

Прочитаем файл data.txt и выведем каждую строку в консоль:

kotlinval file = File("data.txt")
file.forEachLine { line ->
  println(line)
}

Пример

Посчитаем количество строк в файле data.txt:

kotlinvar lineCount = 0
val file = File("data.txt")

file.forEachLine {
  lineCount++
}

println("Total lines: $lineCount")

Результат выполнения кода:

kotlinTotal lines: 42

Пример

Прочитаем файл в кодировке Windows-1251:

kotlinval file = File("data_win1251.txt")
file.forEachLine(Charset.forName("Windows-1251")) { line ->
  println(line)
}

Пример

Соберем все строки файла в список:

kotlinval linesList = mutableListOf<String>()
val file = File("data.txt")

file.forEachLine { line ->
  linesList.add(line)
}

println(linesList)

Результат выполнения кода:

kotlin['line1', 'line2', 'line3', 'line4', 'line5']

Пример

Найдем строки, содержащие определенное слово:

kotlinval searchWord = "error"
val file = File("log.txt")

file.forEachLine { line ->
  if (line.contains(searchWord)) {
    println("Found: $line")
  }
}

Смотрите также

  • функцию readText,
    которая читает весь файл в одну строку
  • функцию readLines,
    которая читает все строки файла в список
  • функцию useLines,
    которая также читает файл построчно, но возвращает результат
  • класс File,
    который представляет файл или директорию