OOP FileReader Einleseergebnis

  • Themenstarter Themenstarter hanswurst21
  • Beginndatum Beginndatum
H

hanswurst21

Gast
Hallo,

habe eine Textdatei mit dem Inhalt:

Code:
Das ist eine Testdatei 
mit zwei Zeilen

Der unten stehende Java Code gibt jedoch folgendes aus:

Code:
Zeichen: Z
Zeichen: e
Zeichen: i
Zeichen: l
Zeichen: e
Zeichen: n
Zeichen: D
Zeichen: a
Zeichen: s
Zeichen:  
Zeichen: i
Zeichen: s
Zeichen: t
Zeichen:  
Zeichen: e
Zeichen: i
Zeichen: n
Zeichen: e
Zeichen:  
Zeichen: T
Zeichen: e
Zeichen: s
Zeichen: t
Zeichen: d
Zeichen: a
Zeichen: t
Zeichen: e
Zeichen: i
Zeichen:  
Zeichen: 

Zeichen: 

Zeichen: m
Zeichen: i
Zeichen: t
Zeichen:  
Zeichen: z
Zeichen: w
Zeichen: e
Zeichen: i
Zeichen:  
Zeichen: Z
Zeichen: e
Zeichen: i
Zeichen: l
Zeichen: e
Zeichen: n
[CODE]

Wieso steht am Anfang immer das Wort "Zeilen" obwohl dies das letzte Wort in der Datei ist?

[CODE]
 try {
       // File Objekt erzeugen
        File f = new File("D:\\test.txt");
        FileReader reader = new FileReader(f);
        int eingelesenesZeichen = reader.read();
            while(eingelesenesZeichen != -1) {
                System.out.println("Zeichen: "+(char) eingelesenesZeichen);
                eingelesenesZeichen =  reader.read();
            }
       }
       catch(FileNotFoundException e) { /* TODO Fehlerbehandlung */ }
       catch(IOException ioe) { /* TODO Fehlerbehandlung */ }
 
Bist Du sicher, dass die Ausgabekonsole vorher auch leer war und Du nicht den Rest der Log-Ausgabe eines vorherigen Laufes mitkopiert hast?
 
Also die Konsole war eigentlich leer. Nutze aber BlueJ. Aber das dürfte ja nix an der Problematik ändern.
 
Ich habe den Code identisch raus kopiert und in ein neues eclipse Projekt eingefügt... eine datei.txt erstellt in den Projekt Ordner gelegt, und es hat perfekt funktioniert:

Code:
Zeichen: D
Zeichen: a
Zeichen: s
Zeichen:  
Zeichen: i
Zeichen: s
Zeichen: t
Zeichen:  
Zeichen: e
Zeichen: i
Zeichen: n
Zeichen: e
Zeichen:  
Zeichen: T
Zeichen: e
Zeichen: s
Zeichen: t
Zeichen: d
Zeichen: a
Zeichen: t
Zeichen: e
Zeichen: i
Zeichen:  
Zeichen: 

Zeichen: 

Zeichen: m
Zeichen: i
Zeichen: t
Zeichen:  
Zeichen: z
Zeichen: w
Zeichen: e
Zeichen: i
Zeichen:  
Zeichen: Z
Zeichen: e
Zeichen: i
Zeichen: l
Zeichen: e
Zeichen: n

PS: Warum ist die While-Schleife eingerückt?

@SlaterB: .
 
Zuletzt bearbeitet:
na sicher kann das genau den Fehler erklären,
schreibe doch einfach zu Beginn des Programms
System.out.println("start);

und/oder zähle erhöhe in der Schleife eine Laufvariabe und schreibe
System.out.println("Zeichen: "+(char) eingelesenesZeichen+", Anzahl bisher: "+count);
 
Danke für eure Mühen. Lag wohl an Blue J. Scheinbar verbleiben Reste in der Konsole wenn man nicht vorher explizit clear aufruft.
Ging doch. Konnte mir das Verhalten nur nicht erklären.
 

Zurück
Oben