Как эффективно добраться до конца текстового файла в Java? - PullRequest
2 голосов
/ 26 ноября 2010

Я искал ТАК, чтобы увидеть, есть ли вопрос по этому поводу, но, видимо, не так. В настоящее время я читаю текстовый файл с использованием BufferedReader. Моя единственная проблема в том, что я хочу прочитать ТОЛЬКО последнюю строку моего файла. IE: я что-то записываю в файл 10 раз, хочу получить 10-ую запись. Я мог легко запустить цикл чтения каждой строки, пока не достигну своей 10-й строки, но мне было интересно, есть ли более эффективный способ, так как файл будет продолжать увеличиваться и может в итоге составить более 100 записей.

Кроме того, я бы предпочел не использовать внешний пакет, если это возможно.

Спасибо!

Ответы [ 4 ]

4 голосов
/ 26 ноября 2010

Чтение 100 строк вряд ли будет проблемой.

Это можно читать текстовый файл в обратном направлении, но:

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

Если вы хотите увидеть, насколько это ужасно, у меня есть некоторый код в этом вопросе переполнения стека - он написан на C #, но вы должны быть в состоянии понять его достаточно легко. Надеюсь, этого достаточно, чтобы убедить вас не делать этого.

Если бы у вас был файл с 100 000 строк, это могло бы стоить ... но 100? Ни за что. Просто прочитайте весь файл.

3 голосов
/ 26 ноября 2010

Возможно, файл не тот инструмент.Откуда текстовый файл?Как насчет вставки строк в таблицу базы данных?Тогда найти последний ряд довольно легко и быстро.

0 голосов
/ 26 ноября 2010

Класс, который вы можете использовать - FileChannel. Проблема, с которой вы столкнетесь (на любом языке), заключается в том, что вы не знаете, где расположить файл, чтобы получить последнюю строку, если не знаете точную длину строки. Вы можете просто сделать резервную копию достаточно, чтобы получить любую разумную длину строки, а затем искать его вперед.

0 голосов
/ 26 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...