Zeilenanzahl einer Textdatei bestimmen

  • Themenstarter Themenstarter nobody_two
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
N

nobody_two

Gast
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
 
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..
 
Nee das möchte ich nicht, weil ich nur eine bestimmte Anzahl auslesen möchte! Sonst dauert mir das zu lange!
 
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!
 
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
 
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:

Code:
    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.
 
Die Idee hört sich nicht schlecht an, das probiere ich doch glatt mal aus!
 
Nochmal Danke für den Tip, funktioniert wunderbar und ist auch schneller als meine vorherige Variante!
 
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.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben