Как определить количество строк в текстовом файле? - PullRequest
0 голосов
/ 11 ноября 2011

Привет всем, у меня есть локальный файл , который выглядит следующим образом:

AAA   Anaa
AAC   EL-ARISH
AAE   Annaba 
AAF   APALACHICOLA MUNI AIRPORT
AAG   ARAPOTI
AAL   Aalborg Airport
AAM   Mala Mala
AAN   Al Ain 
AAQ   Anapa
AAR   Aarhus Tirstrup Airport
AAT   Altay
AAX   Araxa
AAY   Al Ghaydah
...

Java Tutorials предлагает оценить количество строк в файле, выполнив java.io.File.length и деление результата на 50.

Но разве нет более «надежного» способа получить количество строк в текстовом файле (но без необходимости платить занакладные расходы на чтение всего файла)?

Ответы [ 3 ]

8 голосов
/ 11 ноября 2011

Разве вы не можете просто прочитать файл с FileReader и сосчитать количество прочитанных строк?

int lines = 0;
BufferedReader br = new BufferedReader(new FileReader("foo.in"));
while (br.readLine != null) {
    lines++;
}
2 голосов
/ 11 ноября 2011

Преимущество полученного вами алгоритма оценки в том, что он очень быстрый: один stat(2) вызов, а затем некоторое деление.Это займет одинаковое количество времени и памяти независимо от размера файла.Но это также крайне неправильно для огромного количества входных данных.

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

1 голос
/ 11 ноября 2011

Вам необходимо использовать BufferedReader и counter, которые увеличивают значение 1 для каждой функции readLine ().

...