К сожалению, если вы не можете гарантировать, что каждая строка в файле имеет одинаковую длину, вам нужно будет прочитать весь файл или, по крайней мере, до той строки, в которой вы находитесь.
Единственный способ подсчета строк - поиск новых символов строки в файле, а это означает, что вам придется читать каждый байт.
Можно будет оптимизировать ваш код, чтобы сделать его аккуратным и читаемым, но под ним вы всегда будете читать весь файл.
Если вы собираетесь читать один и тот же файл снова и снова, вы можете проанализировать файл и создать индекс, сохраняющий смещения некоторых номеров строк, например, количество байтов, в котором строки 100, 200 и т. Д. ,
Что такое FileUtils? Это из Java 7? – finnw
нет, это общая площадь - библиотека, указанная в вопросе – Bozho
Эффективность? Я думаю, что реальная проблема в том, что первое решение читает ** весь ** файл в память ... – abyx