Читайте первую строку из огромного файла в Котлине - PullRequest
0 голосов
/ 14 сентября 2018

Я хотел бы прочитать первую (и единственную) строку из File в котлине. Файл сам по себе огромен, поэтому я хотел бы использовать эффективное решение для памяти.

Интересно, есть ли лучшее решение, чем:

File("huge.txt").bufferedReader().readLine()

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Вы можете использовать:

file.useLines { it.firstOrNull() }

или:

file.bufferedReader().use { it.readLine() }

Оба гарантируют, что вы фактически закрываете свой читатель после этой строки и действует одинаково.

Если вы точно знаете, что всегда есть первая строка и что файлы никогда не будут пустыми, вы также можете использовать first() вместо этого или вызвать it.readLine()!! (это на самом деле зависит от того, присвоили ли вы результат обнуляемому типу или нет).

0 голосов
/ 14 сентября 2018

То, что у вас есть сейчас, уже довольно эффективно - файл будет загружаться небольшими порциями bufferedReader до тех пор, пока не будет прочитана ни одна строка.Тем не менее, вы должны убедиться, что читатель закрыт - примерно так:

File("huge.txt").bufferedReader().use { it.readLine() }

Если вам не нужна скорость, использование обычного небуферизованного считывателя может сэкономить вам немного памяти, но не намного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...