Exceptions

chillerStudent

Bekanntes Mitglied
Hallo,

bei diesem Programm findet er das die eigegebene Datei nicht.

Java:
import java.util.*;
import java.io.*;
public class MyFile {

public static void main(String[] args) throws IOException  {
		BufferedReader k = new BufferedReader(new InputStreamReader(System.in));
		System.out.print("Bitte Dateiname eingeben: ");
		String file = k.readLine();
                Scanner s = new Scanner(new FileInputStream(file));
}
}

Ich möchte die Klasse MyFile.java lesen. Wenn ich für die String variable file Myfile.java eingebe, findet er nicht. Woran liegt das?
 
Weil die Datei nicht da ist.

Prüfe mal mit new File("meine datei").getAbsolutePath() wo er danach sucht.

Höchstwahrscheinlich nicht da, wo du sie vermutest.
 
Prüfe mal mit new File("meine datei").getAbsolutePath() wo er danach sucht.
Höchstwahrscheinlich nicht da, wo du sie vermutest.

Die Datei ist genua da, wo ich es vermute. Falls du es nicht bemerkt hast, suche ich die Datei, in der ich gerade den Code schreibe. Also die Datei MyFile.java
 
Dann zeig uns doch mal die Fehlermeldung. Und das, was [c]new File("meine datei").getAbsolutePath()[/c] ausgibt.
 
Weil die Datei nicht da ist.

Prüfe mal mit new File("meine datei").getAbsolutePath() wo er danach sucht.

Höchstwahrscheinlich nicht da, wo du sie vermutest.

Die Datei ist genua da, wo ich es vermute. Falls du es nicht bemerkt hast, suche ich die Datei, in der ich gerade den Code schreibe. Also die Datei MyFile.java
ja aber die class Datei sucht und die könnte wo anders liegen ;-)
 
suche ich die Datei, in der ich gerade den Code schreibe. Also die Datei MyFile.java
Diese Datei ist ja aber nicht diejenige, die du schlussendlich ausführst, sondern die class-Datei. Darum wird dir .getAbsolutePath() wohl den Pfad zur class-Datei liefern, der nicht notwendigerweise der gleiche ist wie der deiner java-Datei. Du musst also deine Suchdate relativ zur class-Datei angeben und nicht zur JAVA-Datei.
 
Maßgeblich hängt das von dem Working Directory ab, von wo er sucht und das ist nicht zwangsläufig die Class Datei.

Gruß,

Martin
 
Ok.

Ich führe diesen Code aus:

Java:
import java.util.*;
import java.io.*;
public class MyFile {

	public static void main(String[] args) throws IOException  {
		
		BufferedReader k = new BufferedReader(new InputStreamReader(System.in));
		System.out.print("Bitte Dateiname eingeben: ");
		String file = k.readLine();
		System.out.println(new File("MyFile.java").getAbsolutePath());
        Scanner s = new Scanner(new FileInputStream(file));
	}
}

Und gebe ein: MyFile.java ODER MyFile.class

Fehlermeldung:

Code:
Bitte Dateiname eingeben: MyFile.java
C:\JavaProg\Aufg15\MyFile.java
Exception in thread "main" java.io.FileNotFoundException: MyFile.class (Das System kann die angegebene Datei nicht finden)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(Unknown Source)
	at java.io.FileInputStream.<init>(Unknown Source)
	at WithScanner.main(MyFile.java:12)

Habe gemerkt, dass MyFile nicht in dem Ordner Aufg15 drin ist, sondern in dem Unterordner davon: src.
 
Warum sollte er das tun, wenn du ihm sagst, dass deine Datei in genau diesem Ordner zu finden ist?`Wie dem auch sein, da du das ja jetzt herausgefunden hast, musst du den Pfad ja jetzt entpsrechend anpassen... also ran ans Werk 😀
 
Wenn du einen relativen Pfad angibst, was du mit eingabe eines Dateinamen machst, dann wird relativ zum working directory (property "user.dir") danach gesucht.
 

Zurück
Oben