У меня есть файл, который состоит из 66564 строк, которые я разделяю на каждую строку. Мне нужно будет сгруппировать эти строки на основе строки, которая указывает на конец записи. Я собираюсь использовать splitAfter
для этого, но сейчас я уже застрял с этим:
val numLines = AtomicLong(0)
FileIO.fromPath(Paths.get(file))
.via(Framing.delimiter(ByteString.fromString("\n"), Int.MAX_VALUE, true))
.map { it.decodeString(StandardCharsets.UTF_8) }
.map {
numLines.incrementAndGet()
it
}
.to(Sink.ignore())
.run(materializer)
.toCompletableFuture()
.get()
println(numLines.get())
Я ожидал, что это вернет количество строк (66564), однако он возвращает разные значения при каждом запуске (для одного и того же файла). Значения обычно находятся между 64000 и 66000.
Я уверен, что это какая-то мелочь, но я смотрю на это часами и просто не понимаю, почему это приводит к случайным результатам ...