Hi,
hier ein simpler Code zum zählen der Zeilen in einer Textdatei.
Funktioniert gut bei bei vielen, auch beliebig großen Files - aber u.a. nicht bei folgender Wortliste.
105MB große Wortliste. Pass: 4gulli Die Liste hat pro Zeile ein Wort.
Die While-Schleife stoppt zu früh. Die letzten gelesenen Zeilen sind:
...
abbuiati
abbuiato
abbuiava
abbuiavano
abbuino
abb
Wobei das letzte Wort eigentlich laut normalem Texteditor "abbuio" heißen sollte. Die Methode liest aber nach dem zweiten "b" anscheinend ein Carriage Return und danach liefert hasNextLine() false. Die Ausgabe 648034 passt aber trotzdem nicht. Laut Texteditor befindet sich "abbuino" in Zeile 648104.
Hat das mit fehlerhaften Zeilenumbruch-Zeichen oder vielleicht mit der eingestellen Codierung zu tun?
Der Texteditor (Linux Gedit) lässt an der Stelle nichts vermuten.
Gruß
hier ein simpler Code zum zählen der Zeilen in einer Textdatei.
Java:
public static int getNumLines(String inputPath) throws IOException{
int res = 0;
String test = null;
Scanner input = new Scanner(new File(inputPath));
while(input.hasNextLine()){ //input.hasNext() liefert das gleiche Problem
input.nextLine();
res++;
}
input.close();
return res;
}
Funktioniert gut bei bei vielen, auch beliebig großen Files - aber u.a. nicht bei folgender Wortliste.
105MB große Wortliste. Pass: 4gulli Die Liste hat pro Zeile ein Wort.
Die While-Schleife stoppt zu früh. Die letzten gelesenen Zeilen sind:
...
abbuiati
abbuiato
abbuiava
abbuiavano
abbuino
abb
Wobei das letzte Wort eigentlich laut normalem Texteditor "abbuio" heißen sollte. Die Methode liest aber nach dem zweiten "b" anscheinend ein Carriage Return und danach liefert hasNextLine() false. Die Ausgabe 648034 passt aber trotzdem nicht. Laut Texteditor befindet sich "abbuino" in Zeile 648104.
Hat das mit fehlerhaften Zeilenumbruch-Zeichen oder vielleicht mit der eingestellen Codierung zu tun?
Der Texteditor (Linux Gedit) lässt an der Stelle nichts vermuten.
Gruß
Zuletzt bearbeitet: