Читать строки между начальным и конечным индексом в Java - PullRequest
1 голос
/ 31 марта 2010

Допустим, у меня есть 10 строк в файле. У меня есть 2 параметра, которые указывают начало и конец индекса.

StartIndex = 2 // указывает первые 2 строки

EndIndex = 3 // указывает последние 3 строки

Мне нужно прочитать строки между ними. Я знаю, что ведение индекса и пропуск это один из способов ... но есть ли другие эффективные способы (даже с внешними библиотеками)?

Спасибо

Ответы [ 3 ]

0 голосов
/ 31 марта 2010

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

File file = new File("myfile.txt");
List lines = FileUtils.readLines(file).subList(2,3);

http://commons.apache.org/io/

0 голосов
/ 31 марта 2010

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

0 голосов
/ 31 марта 2010

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

Что касается конца, если ваш конечный индекс является индексом с начала файла, вы можете остановиться раньше. Но вы имели в виду 3-ю строку из конца файла? В этом случае вам также придется прочитать весь файл до конца файла, чтобы узнать, когда следует остановиться.

Один особый случай, если вы знаете, что все строки имеют одинаковую длину. Затем вы можете искать прямо в правильном месте в файле и начать чтение оттуда.

...