К сожалению, если вы не можете гарантировать, что каждая строка в файле имеет одинаковую длину, вам придется прочитать весь файл или, по крайней мере, до строки, которую вы ищете.
Единственный способ подсчитать строки - это найти символы новой строки в файле, а это значит, что вам придется читать каждый байт.
Будет возможно оптимизировать ваш код, чтобы он был аккуратным и читабельным, но под ним вы всегда будете читать весь файл.
Если вы собираетесь читать один и тот же файл снова и снова, вы можете проанализировать файл и создать индекс, хранящий смещения определенных номеров строк, например, количество байтов, в котором находятся строки 100, 200 и т.