2012-04-24 4 views
0

У меня есть набор текстовых файлов, содержащих информацию, которая анализируется, анализируется и позволяет строить модель. Когда-то пользователь этой модели хочет знать, какая часть текстового файла использовалась для создания данного элемента модели.Индексирование текстовых файлов в java

Для этого я собираюсь отслеживать диапазон идентификаторов строк (или байтов), чтобы иметь возможность прочитать соответствующую текстовую часть, как только это необходимо.

Мой вопрос: интересно, существует ли у него какой-либо java Reader, способный читать файл, используя идентификатор начала и конца строки (или байта) вместо того, чтобы читать файл с начала и подсчитывать строки (байты)?

С наилучшими пожеланиями

ответ

6

Если вы точно знаете, количество байтов, которые должны быть пропущены, вы можете использовать искать метод метод из RandomAccessFile

+0

Плюс нет никакого способа указать смещение линии и не нужно читать последовательно сверху. –

+0

Это действительно идеальное решение, спасибо :) – Martin

1

Вы можете использовать InputStream.mark() и InputStream.skip(), чтобы перейти к конкретной позиции в файле.

Но вы уверены, что вам действительно нужно реализовать это самостоятельно? Посмотрите на Lucine - услугу индексирования, которая, вероятно, поможет вам.

+1

Я бы не рекомендовал Lucene для этой задачи, поскольку нет текстового поиска, это просто индексация (как в «индексе массива») в известный файл. –

+0

Я немного знаю о Люцене, и да, я думаю, что это слишком много, так как мы не планируем искать, а только для извлечения текстовых фрагментов. – Martin

2

читать с определенного байта - SeekableByteChannel. Из-за чего нет читателей, которые могут начать с идентификатора строки, потому что позиции разделителей строк неизвестны.

+0

Он выглядит великолепно, но, к сожалению, требование 1,7 для нас плохо. – Martin

Смежные вопросы