Прочитав определенное количество строк из файла


def getLinesFromFile(file:File, linesToGet:Int): List[String] ={
    val bufferedSource = Source.fromFile(file)
    val lb = ListBuffer[String]()
    try {
      val lines = bufferedSource.getLines()
      var counter = 0
      while (lines.hasNext && counter < linesToGet) {
        counter += 1
        lb.append(lines.next())
      }
    } finally {
      bufferedSource.close()
    }
    lb.toList
  }

Я пытаюсь получить определенное количество строк из текстового файла прочитать, и возвращать каждую строку как Список для пользователя. Проверка файла на самом деле является .файл txt-это сделали до этого вызова, и я могу с уверенностью сказать, что каждая линия не станет больше, чем @500 символов.

Моя главная забота Я интересно, если есть какой-либо причине, этот код будет создавать утечки памяти?



233
1
задан 2 февраля 2018 в 07:02 Источник Поделиться
Комментарии
1 ответ

Это реализация очень процессуальные. getLines() возвращает Iterator, который поддерживает take(n) метод.

def getLinesFromFile(file:File, linesToGet:Int): List[String] = {
val bufferedSource = Source.fromFile(file)
try {
bufferedSource.getLines.take(linesToGet).toList
} finally {
bufferedSource.close
}
}

1
ответ дан 2 февраля 2018 в 08:02 Источник Поделиться