# FileNotFoundException



## Gravitox (18. Mai 2012)

Ich versuche nun schon seit fast zwei Tagen eine simple Textdatei per Java einzulesen, komme aber mit Eclipse nicht weiter.

Hier mein Quelltext aus der Main-Datei:

```
package tests;

import java.io.FileReader;

public class Main {

	public static void main(String[] args) {
		
		/**
		 * Test zum einlesen einer Textdatei
		 */
		FileReader fileReader = new FileReader("test.txt");

	}

}
```

Im Package Explorer liegt folgende Struktur vor:

src
tests
Main.java
test.txt


Das Problems Panel gibt mir immer eine FileNotFoundException aus und so langsam weiß ich trotz intensiver Google-Recherche nicht mehr weiter.
Ich habe die Textdatei sogar in Eclipse angelegt, befüllt und gespeichert, aber trotzdem wird die Datei nicht gefunden.

Bitte um Hilfe!


----------



## SlaterB (18. Mai 2012)

du kannst hier wie meist auch ein File-Object erstellen und dir dessen kompletten Pfad ausgeben lassen, 
dann weist du an welcher Stelle Java nachschaut, wahrscheinlich in dem Verzeichnis, in dem src liegt,
Projektgrundverzeichnis


----------



## ARadauer (18. Mai 2012)

hier sucht java die datei


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


----------



## Gravitox (18. Mai 2012)

Meinst du etwa in der Form:

```
File file = new File("test.txt");

System.out.println(file.getAbsolutePath());
```

ARadauer war schneller 

Dann bekomme ich tatsächlich das Projektverzeichnis.
Muss ich dann von dort aus durch "src/test/test.txt" ?


----------



## SlaterB (18. Mai 2012)

> Muss ich dann von dort aus durch "src/test/test.txt" ? 
die berühmten ja-nein-Fragen, ist das Forum auch diesmal schneller als mein Java-Test?


----------



## CortPoker (18. Mai 2012)

Die Datei sollte nicht im src-Folder sein, sondern einfach im Projektordner.
Oder du änderst die Pfadangabe in "src/test/test.txt"


----------



## Gravitox (18. Mai 2012)

Habe ich gemacht, also den Pfad an "src/tests/test.txt" angepasst.
Leider bleibt es bei der Exception...

Auch das testweise Verschieben in den Projektordner bringt nichts.


----------



## CortPoker (18. Mai 2012)

Dann reicht die relative Pfadangabe wohl nicht. "C:/User/......" musst du dann angeben.
Oder einfach deine .txt Datei in den Projektordner schieben und dem FileReader "test.txt" übergeben


----------



## SlaterB (18. Mai 2012)

> Leider bleibt es bei der Exception...
zusammen mit dieser Feststellung macht die Frage dann auch Sinn,

erzeuge ein File-Objekt mit "src/tests/test.txt", was liefert exists()?
erzeuge ein File-Object auf "src/tests", liste die Unterdateien in dem Verzeichnis auf,
vergleiche sie mit deinem gedachten Dateinamen,
heißt die Datei zufällig test.txt.txt?

> Dann reicht die relative Pfadangabe wohl nicht. 
naja, unbegründet muss man das nicht hinnehmen, es findet sich bisher doch immer eine Lösung


----------



## Gravitox (18. Mai 2012)

SlaterB hat gesagt.:


> >erzeuge ein File-Objekt mit "src/tests/test.txt", was liefert exists()?


true


SlaterB hat gesagt.:


> erzeuge ein File-Object auf "src/tests", liste die Unterdateien in dem Verzeichnis auf,
> vergleiche sie mit deinem gedachten Dateinamen,


test.txt
Main.java


SlaterB hat gesagt.:


> heißt die Datei zufällig test.txt.txt?


nein


----------



## Gravitox (18. Mai 2012)

Interessanter Weise verschwindet der FileNotFoundException Error, wenn ich die package Deklaration entferne.
Eclipse läßt mich dann zwar wegen der fehlenden Deklaration trotzdem nicht kompilieren, aber vielleicht hilft das irgendwie weiter?


----------



## SlaterB (18. Mai 2012)

wenn du ein Programm nicht kompilieren kannst, wie soll es dann ohne Exception ausgeführt werden?

ansonsten ist die Kombination aber recht hart, will mir nicht in den Kopf,
wenn noch weiter interessiert, dann vorerst ohne Unterverzeichnisse,
wie sieht es mit folgenden Textprogramm aus:

```
public class Test {

	public static void main(String[] args) throws Exception {
		String path = "test12.txt";
		File f = new File(path);
		System.out.println(f.exists());
		f.createNewFile();
		System.out.println(f.exists());
		FileReader fileReader = new FileReader(f);
		System.out.println("geht1");
		FileReader fileReader2 = new FileReader(path);
		System.out.println("geht2");
	}
}
```
falls Datei vorher nicht vorhanden sollte die Ausgabe

```
false
true
geht1
geht2
```
lauten, klappt das?
ist danach diese Datei wenigstens in aller Form greifbar?
ist sie in anderen Programmen wie Eclipse oder Windows Explorer auf irgendeine Weise von der anderen, nicht funktionierenden Datei im Grundverzeichnis des Projektes zu unterscheiden?

sobald dort alles funktioniert, mein Programm gegebenenfalls mit src + src/tests testen


----------

