Причиной повторяемости файлов является то, что они читаются последовательно.Длина файла в строках не может быть рассчитана, если не обработан весь файл .(Длина файла в байтах не является показателем того, сколько строк в нем есть.)
Проблема в том, что, если бы файл имел длину в гигабайты, вы могли бы не захотеть прочитать его дважды, если это поможет.
Вот почему лучше не знать длину;вот почему следует иметь дело с файлами данных как Iterable
, а не с коллекцией / вектором / массивом, имеющим длину.
Ваш код чанкинга должен иметь возможность иметь дело непосредственно с самим объектом файла, не знаяего длина.
Однако , если вы хотите узнать количество строк перед полной обработкой, ваши 2 варианта:
- буферизируют весь файл в массивсначала строки, затем эти строки передайте вашему блоку
- прочитайте его дважды, в первый раз отбрасывая все данные, просто записав строки