RandomAccessFile liest nur jeden zweiten Wert aus!

Status
Nicht offen für weitere Antworten.

Maxxon

Mitglied
Hallo!

Hab ein kleines Problem, dass wohl öfters auftaucht. Aber trotz Suche im Board habe ich keine wirkliche Antwort gefunden.

Also: Ich habe ein Verzeichnis ("drinks.txt"). Dort stehen die Worte: Apfel, Banane, Waldmeister, Ananas, Multivitamin drin. Genau in dieser Reihenfolge, jedes Wort in einer neuen Zeile.

Jetzt möchte ich die txt-Datei gerne auslesen. Dazu dieser Code:
Code:
public void liesDatei()
{
  try
   {
   RandomAccessFile datei = new RandomAccessFile("drinks.txt", "r");
   datei.seek(0);
   
   while(datei.readLine() != null)
   {
   System.out.println(datei.readLine());
   }
   datei.close();

   catch(IOException e)
  {}
}

Aber es funktioniert nicht wirklich:
Beim Ausführen wird augegeben: Banane, Ananas, null!

Warum?? Ich weiß, dass es an der Bedingung in der while-Schleife liegen müßte!
Aber was muß ich reinschreiben, damit es funktioniert?

Ich weiß, daß hier fast der gleiche Thread schon mal vorhanden ist, aber die Antwort hilft mir nicht wirklich weiter.

Danke für Hilfe.
 
warum benutzt du RandomAccessFile :? ?

while(datei.readLine() != null)
{
System.out.println(datei.readLine());

du liest bei jedem durchgang zweimal die nächste zeile aus der datei, eine gibst du nicht aus.
 
Mit dem "datei.readLine()" in der Abfrage der While-Schleife liest Du ebenfalls ein, verwirfst aber die eingelesene Zeile, weil Du sie keiner Variable zuweist.

[EDIT: ok, zu lahm getippt]
 
Hab mein Problem gelöst 😀

Ich machs jetzt mit einem BufferedReader!

Code:
public void liesDatei()
{
String line;

try
{
BufferedReader datei = new BufferedReader(new FileReader("drinks.txt"));

while((line = datei.readLine()) != null)
{
   System.out.println(line);
}
datei.close();
}
catch(IOException e)
{}

Funktioniert alles super!
 
Code:
catch(IOException e)
{}
dann freu dich mal, wenn etwas nicht so geht wie du denkst und du hast keine Ahnung warum... ergo: eine Exception NIE ohne Ausgabe abfangen !!
 
deathbyaclown hat gesagt.:
Code:
catch(IOException e)
{}
dann freu dich mal, wenn etwas nicht so geht wie du denkst und du hast keine Ahnung warum... ergo: eine Exception NIE ohne Ausgabe abfangen !!
ausnahme: badlocationexception :|
 
Noch besser als nur eine Ausgabe ist eine sinnvolle Fehlerbehandlung. (Die häufig mit einer Ausgaben verbunden sein kann - aber nicht muss)
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben