# Zeilenanzahl einer Textdatei bestimmen



## nobody_two (24. Nov 2004)

Hallo Leute,

ich habe eine ziemlich simple Frage. Wie kann ich die Zeilenanzahl einer Textdatei bestimmen. Der Knackpunkt dabei ist, das ich nicht jede Zeile einlesen möchte, da es sich um Dateien mit bis zu 13000 und mehr Datensätze handeln kann!

Danke für eure Hilfe!

MFG nobody_two


----------



## Student (24. Nov 2004)

nobody_two hat gesagt.:
			
		

> da es sich um Dateien mit bis zu *13000 und mehr Datensätze *handeln kann!


 :arrow:  :shock:  .. puh ... moment ..  :shock:  :shock: 

hm. ich dachte immer, dass das nur durch zählen der zeilen wärehnd des auslesens geht .. aber das willst du ja eben nicht. hmm..


----------



## nobody_two (24. Nov 2004)

Nee das möchte ich nicht, weil ich nur eine bestimmte Anzahl auslesen möchte! Sonst dauert mir das zu lange!


----------



## dotlens (24. Nov 2004)

schau dir mal die klasse RandomAccessFile an

besonder die methode seek()


----------



## Bleiglanz (24. Nov 2004)

du musst die Datei lesen (wie solls denn sonst gehen???)

glaubst du vielleicht, dass bei Textdateien irgendwo an einem magischen Ort die Zahl der Zeilen abgerufen werden kann - das ist nicht der Fall!


----------



## nobody_two (25. Nov 2004)

Nein ich glaube nicht das die Zeilenzahl an irgendeinem magischen Ort steht! Ich dachte nur das es vieleicht eine Möglichkeit gibt die Zeilen irgendwie durchzugehen und sie dabei zu zählen ohne sie allerdings einzulesen!Wenn es das nicht gibt tuts mir leid! Man kann sich ja auch mal irren!

MFG nobody_two


----------



## Sky (25. Nov 2004)

nobody_two hat gesagt.:
			
		

> Ich dachte nur das es vieleicht eine Möglichkeit gibt die Zeilen irgendwie durchzugehen und sie dabei zu zählen ohne sie allerdings einzulesen!



Wie meinst Du das denn?

Was Du tun könntest: Mittels einer Schleife gucken, wie oft Du *BufferedReader#readLine* aufrufen kannst. Das Ergebnis von *BufferedReader#readLine* musst Du selbstverständlich nicht Speichern:


```
long l = System.currentTimeMillis(); // Systemzeit merken => Dauer berechnen!
    try {
      BufferedReader in = new BufferedReader(new FileReader(FILE));
      int count = 0;
      while ( in.readLine() != null ) {
        count++;
      }
      System.out.println("Anzahl: " + count);
      System.out.println("Dauer: " + (System.currentTimeMillis()-l)); // Dauer ausgeben.
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
```



			
				Console hat gesagt.:
			
		

> Anzahl: 13000
> Dauer: 63



Die Test-Zeilen waren bei mir einheitlich befüllt und 80 Zeichen lang.

*Hinweis:* Bei dieser Art wird selbstverständlich die Datei einmal sequenziell durchgelesen.


----------



## nobody_two (25. Nov 2004)

Die Idee hört sich nicht schlecht an, das probiere ich doch glatt mal aus!


----------



## nobody_two (25. Nov 2004)

Nochmal Danke für den Tip, funktioniert wunderbar und ist auch schneller als meine vorherige Variante!


----------



## abollm (25. Nov 2004)

nobody_two hat gesagt.:
			
		

> Nochmal Danke für den Tip, funktioniert wunderbar und ist auch schneller als meine vorherige Variante!



Im übrigen muss ich einmal betonen, dass ich bereits ASCII-Dateien mit über 160.000 Zeilen in einer akzeptablen Zeit mittels Java-Programm "eingelesen" habe. Soo langsam, wie manche behaupten, ist Java denn dann doch niicht.


----------

