Предоставленные ответы должны хорошо работать в большинстве (подавляющем большинстве) ситуаций. Но для действительно огромных входных файлов, возможно, имеет смысл использовать другой подход с использованием RandomAccessFile
(RAF).
Используя RAF, читайте первые байты до появления символа новой строки (для первой строки), затем ищите назад от конца RAF, чтобы найти последнюю новую строку, и читайте оттуда до конца (для последняя строка).
Еще проще, если строки имеют фиксированную ширину столбца (FCW), но это данные CSV. Для FCW вы можете вычислить , где начнется последняя строка, зная размер файла и ширину (длину) строки, и перейти непосредственно к этой точке.