# Das System kann die angegebene Datei nicht finden



## Marco7757 (20. Feb 2010)

Ich bekomme die im Titel genannte Fehlermeldung bei folgendem Code:


```
try {
	BufferedReader reader = new BufferedReader(new FileReader("records.txt"));
	//Code
} catch (IOException e) {
	System.err.println("Error2 :"+e);
}
```

Sowohl *.class-Datei als auch die Textdatei befinden sich im gleichen Verzeichnis! Wieso kann das System also "records.txt" nicht finden?


----------



## Murray (20. Feb 2010)

Die Datei wird im aktuellen Verzeichnis (i.d.R. also im Arbeitsverzeichnis der Anwendung)  gesucht; das hat nicht notwendigerweise etwas damit zu tun, wo das Class-File liegt.


----------



## Marco7757 (20. Feb 2010)

Ist mit dem Arbeitsverzeichnis das gemeint, indem der File mit der main-Methode ist?
Alle Dateien die mein Programm benötigt liegen im gleichen Verzeichnis. Es gibt gar kein anderes ...


----------



## Murray (20. Feb 2010)

Wenn du 
	
	
	
	





```
System.out.println( new File().getAbsolutePath());
```
 ausführst, siehst du, welcehs ads aktuelle Verzeichnis ist.


----------



## SlaterB (20. Feb 2010)

File f = new File("records.txt");
System.out.println(f.getAbsolutePath());

und das mit dem Dateisystem vergleichen


----------



## Marco7757 (20. Feb 2010)

C:\Users\NAME\Programming\Java\Tetris\Tetris.class
C:\Users\NAME\Programming\Java\Tetris\records.txt

Es liegen beide Dateien im gleichen Verzeichnis. Den Pfad habe ich mit dem von euch vorgeschlagenen Code bekommen:

```
System.out.println(new File("Tetris.class").getAbsolutePath());
System.out.println(new File("records.txt").getAbsolutePath());
```


----------



## Murray (20. Feb 2010)

Marco7757 hat gesagt.:


> C:\Users\NAME\Programming\Java\Tetris\Tetris.class
> C:\Users\NAME\Programming\Java\Tetris\records.txt


Und  - stehen die beiden Dateien in diesem Verzeichnis?


----------



## Marco7757 (20. Feb 2010)

Nicht wirklich. Das ist der Pfad zum Eclipse-Projekt. Die Dateien befinden sich jedoch zwei Ordner tiefer, also in C:\Users\NAME\Programming\Java\Tetris\bin\game ... game ist mein package

Aber dort sind alle im gleichen Verzeichnis!


----------



## Murray (20. Feb 2010)

Marco7757 hat gesagt.:


> Aber dort sind alle im gleichen Verzeichnis!


Wie schon gesagt - das ist nicht der Punkt. Entscheidend ist, wo das Arbeitsverzeichnis der Anwendung ist, und das hängt wiederum davon, wie das Programm gestartet wird. In Eclipse ist es standard-mäßig das Projektverzeichnis.
Also:

```
BufferedReader reader = new BufferedReader(new FileReader("bin\\game\\records.txt"));
```


----------



## Marco7757 (20. Feb 2010)

Okay, vielen Dank.

Wenn ich das Ganze dann als runnable jar-File exportiere. Muss ich den Pfad dann wieder anpassen? Wahrscheinlich schon, aber wie?


----------



## mvitz (20. Feb 2010)

besser als \ ist es in Java einfach / als Pfad trenner zu benutzen, also:


```
BufferedReader reader = new BufferedReader(new FileReader("bin/game/records.txt"));
```

Noch besser wäre es vermutlich, die Datei über den Classloader zu laden, dafür gibts hier im Forum dann auch etliche Threads zu, die man sicher finden kann.


----------



## Marco7757 (20. Feb 2010)

Classloader?

getClass().getRessourceAsStream("records.txt");

Irgendwie so?


----------



## mvitz (20. Feb 2010)

Jap, dann müssen die txt Dateien allerdings im Klassenpfad (Classpath) liegen.


----------

