НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
591 of 1310 menu

Функция useLines

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

Импорт

import java.io.File import java.nio.charset.Charset import kotlin.io.useLines

Синтаксис

fun File.useLines( charset: Charset = Charsets.UTF_8, block: (Sequence<String>) -> T ): T
fun useLines( path: String, charset: Charset = Charsets.UTF_8, block: (Sequence<String>) -> T ): T

Пример

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

val file = File("data.txt") val lineCount = file.useLines { lines -> lines.count() } println("Line count: $lineCount")

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

Line count: 5

Пример

Прочитаем файл через путь и отфильтруем строки, содержащие слово "error":

val errorLines = useLines("log.txt") { lines -> lines.filter { it.contains("error") }.toList() } println("Error lines: $errorLines")

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

Error lines: ['error: file not found', 'error: permission denied']

Пример

Прочитаем файл в кодировке Windows-1251 и преобразуем строки в верхний регистр:

val upperLines = File("data_win.txt").useLines(Charset.forName("Windows-1251")) { lines -> lines.map { it.uppercase() }.toList() } println("Uppercase lines: $upperLines")

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

Uppercase lines: ['FIRST LINE', 'SECOND LINE', 'THIRD LINE']

Пример

Посчитаем общую длину всех строк в файле:

val totalLength = File("text.txt").useLines { lines -> lines.sumOf { it.length } } println("Total length: $totalLength")

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

Total length: 123

Примечания

Функция useLines автоматически закрывает файловый поток после выполнения лямбды, даже если произошла ошибка. Это делает её безопасной для работы с файлами. Возвращаемое значение соответствует результату лямбды.

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

  • функцию readLines,
    которая читает все строки файла в список
  • функцию forEachLine,
    которая выполняет действие для каждой строки файла
  • функцию bufferedReader,
    которая создает буферизованный читатель для файла
  • класс File,
    который представляет файл или директорию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить