# EOFException was soll der ...



## Raphaeö (1. Apr 2004)

Hi, 

vielleicht kann mir einer von euch helfen. Ich versuche  eine Datei zu öffnen und den bestehenden inhalt auszulesen. beim komplilieren kriege ich keine Fehler, jedoch erst wenn ich es ausführe. Die Datei aus der gelsesn werden soll ist vorhanden, und besitzt die nötigen schreibrechte.


```
java.io.EOFException
	at java.io.DataInputStream.readInt(DataInputStream.java:448)
	at Addressbook.restoreData(Addressbook.java:116)
	at Addressbook.<init>(Addressbook.java:103)
at Main.main(Main.java:11)
```

Code auszug wo fehler auftritt:

```
/**
     * Konstruktor.
     */
    Addressbook(String inFile) {
        restoreData(inFile);       <<<<<<<<<<<<< HIER TRITT DER FEHLER AUF
        saveOnExit(inFile);
    }
```


```
/**
     * Diese Methode liest, falls vorhanden, anfängliche Daten
     * aus der angegebenen Datei.
     * 
     * @param inFile Dateiname.
     */
    private void restoreData(String inFile) {
        try {
            DataInputStream in =new DataInputStream(new BufferedInputStream(new FileInputStream(inFile)));
            int n = in.readInt();
            for (int i = 0; i < n; i++)
                addAddress(new Address(in));
            in.close();
        }
        catch (FileNotFoundException ignore) {
            // ignored: we start with an empty table
        }
        catch (IOException fatal) {
            fatal.printStackTrace();
            System.exit(1);
        }
    }
```

Ich wär euch für jeden auch so kleinen Tipp Dankbar

Gruss Raphael


----------



## Tobias (2. Apr 2004)

EOFException bedeutet, du versuchst etwas zu lesen, was hinter dem Ende der Datei steht -> sprich deine Leseschleife in restoreData wird mindestens einmal zu oft durchlaufen...

mpG
Tobias


----------



## Ketchup (2. Apr 2004)

Hi, das da oben ist mein Beitrag 

Es ist schon ein Fertiger Code vom meinen Prof. Der Sollte eigentlich so funktionieren. Dewegen wunder es mich das er so ein sche** ausgibt.

Wie kann ich verhindern das er es öfters ausliest?


Gruss


----------



## bygones (2. Apr 2004)

Ich denke die Datei die du lesen willst ist leer - daher wirft er eine Exception, weil du was lesen willst und die Datei hat aber nichts....

Keine Ahnung was du dann im Programm damit anfängst, wenn keine Daten vorhanden sind ?! Vielleicht wie bei FIleNotFound einfach ignorieren .....


----------



## Ketchup (2. Apr 2004)

Ich denke das das es schon verhindert?


```
catch (FileNotFoundException ignore) { 
            // ignored: we start with an empty table
```


----------



## bygones (2. Apr 2004)

Nein, FileNotFoundException wird geworfen, wenn das File nicht gefunden wird !
EOFException wird geworfen, wenn das Ende des Files (EOF) erreicht wurde und man weiter lesen will.....

Beide können eigentlich unter IOException subsumiert werden (wenn man keine untersch. Reaktionen haben will) !!


----------



## Ketchup (2. Apr 2004)

So der Fehler ist nu wech, war mal wieder so ein kleiner Fehler der große auswirkungen hatte.


----------

