Мне нужно произвольно обращаться к определенным записям в текстовом (ASCII) файле, а затем читать оттуда, пока не будет найдена определенная «последовательность остановки» (разделитель записей). Файл содержит многострочные записи, и каждая запись отделена разделителем. Каждая запись также занимает разное количество строк! Это общеизвестный формат файла в конкретной области знаний, и его нельзя изменить.
Я хочу проиндексировать файл, чтобы быстро перейти к запрошенной записи.
В подобных вопросах, как
Как получить доступ к строке в файле по позиции в Java а>
и ссылки в нем, ответ всегда ссылается на метод seek()
различных классов, таких как RandomAccessFile
. Я знаю об этом!
У меня проблема в том, как получить смещение, необходимое для поиска! (индексирует файл)
BufferedReader
не имеет метода getFilePointer()
или любого другого для получения текущего смещения в байтах от начала файла. RandomAccessFile
имеет метод readLine()
, но его производительность просто ужасна. Для моего случая вообще не годится.
Мне нужно будет прочитать файл построчно, и каждый раз, когда будет найден разделитель записи, мне нужно получить смещение байта. Как я могу этого добиться?