Номер строки не влияет на то, что возвращается строка , только номер строки, который будет сообщен для него.
Весь смысл LineNumberReader
не в том, чтобы автоматическиискать конкретную строку, это отслеживать текущий номер строки, не беспокоясь об этом.
Другими словами, вы просто открываете ридер и начинаете читать.Когда вы найдете интересующую вас линию, вы можете позвонить getLineNumber()
, чтобы узнать, какая это была строка.
С этой целью setLineNumber()
просто меняет сообщенный номер строки для текущей строки.Он не перемещает указатель файла на эту строку в файле.
Чтобы получить конкретную строку rnd
, самое простое решение - просто прочитать rnd
строки в цикле.Последний прочитанный - тот, который вы хотите.В псевдокоде:
open bufferedreader br
get limit from first line of br
set rnd to number from 1 to limit
while limit > 0:
set line to next line of br
decrement limit
use line
Если или когда это окажется слишком неэффективным для вас, тогда вы можете начать думать о предварительной загрузке данных в какую-то структуру памяти.