Pacerier
Pacerier

Reputation: 89603

How do we determine the number of lines in a text file?

Hi all I have a local file which looks like this:

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 suggests estimating the number of lines in a file by doing java.io.File.length and dividing the result by 50.

But isn't there a more "solid" way to get the number of lines in a text file (yet without having to pay for the overhead of reading the entire file)?

Upvotes: 0

Views: 12835

Answers (3)

KV Prajapati
KV Prajapati

Reputation: 94635

You need to use BufferedReader and a counter which increment the value 1 for each readLine().

Upvotes: 1

sarnold
sarnold

Reputation: 104040

The benefit to the estimation algorithm you've got is that it is very fast: one stat(2) call and then some division. It'll take the same length of time and memory no matter how large or small the file is. But it's also vastly wrong on a huge number of inputs.

Probably the best way to get the specific number is to actually read through the entire file looking for '\n' characters. If you read the file in in large binary blocks (think 16384 bytes or a larger power of two) and look for the specific byte you're interested in, it can go at something approaching the disk IO bandwidth.

Upvotes: 2

Jonathon Reinhart
Jonathon Reinhart

Reputation: 137398

Can't you just read the file with a FileReader and count the number of lines read?

int lines = 0;
BufferedReader br = new BufferedReader(new FileReader("foo.in"));
while (br.readLine != null) {
    lines++;
}

Upvotes: 8

Related Questions