2012-04-08 17 views
3

Ich bin gerade mit dem Lesen von Eingabedateien mit Java rum, bis ich bei den grundlegendsten Schritten ratlos wurde ... finde die Eingabedatei!Eingabedatei kann nicht gefunden werden

Die input.txt-Datei im selben Verzeichnis wie meine Klassendatei, die es noch Eclipse noch einen Fehler gibt mir ruft, dass es gefunden werden kann nicht:

„Exception in thread‚main‘java.lang. Fehler: Ungelöste Kompilierung Problem: Unbehandelte Ausnahme Typ FileNotFoundException“

Mein Code:

package pa; 
import java.util.Scanner; 

public class Project { 
public static void main(String[] args) { 
    java.io.File file = new java.io.File("input.txt"); 
    System.out.println(file.getAbsolutePath()); 
    Scanner input = new Scanner(file); 
} 
} 

input.txt ist im selben Paket, gleichen Ordner und alles. Ich bin verwirrt :(

+0

Versuchen Umgang Erstellen einer Datei und sehen, ob neu erstellte Datei in denselben Ordner vorgenommen wird. Wenn Sie Pfad wie "input.txt" angeben, macht der Java-Compiler $ PWD/input.txt, wobei $ PWD der Pfad ist, von dem aus die Klassendatei ausgeführt wurde. – Shivam

Antwort

4

ich über Eclipse weiß es nicht, aber in Netbeans ist der Weg nicht aus dem Paket (Ordner) Klasse starten ist in, aber der Stammordner Ihres Projekts. Um diese Datei in Netbeans zu finden, müssten Sie new File("src/pa/input.txt") setzen.

+0

Das ist das Problem !! Vielen Dank! –

+1

Beachten Sie, dass anstelle von '/' und '\' 'File.separator' verwendet werden sollte, um die Portabilität zu ermöglichen. – MByD

+0

Kein Problem. Außerdem würde ich einen FileInputStream anstelle eines Scanners empfehlen. – MarioDS

1

Versuchen Sie, mit dem absoluten Pfad der Datei, zum Beispiel:

java.io.File file = new java.io.File("C:\\My Documents\\User\\input.txt"); 

Auch erklären die main() Methode wie folgt:

public static void main(String[] args) throws FileNotFoundException { 

Normalerweise würden Sie wollen Die Exception abfangen und behandeln, aber jetzt einfach werfen

1

Bei der Verwendung von Eclipse ist das Arbeitsverzeichnis das Projektverzeichnis, nicht das Verzeichnis der Klasse

Sie können das Arbeitsverzeichnis in dem folgenden Verfahren erhalten:

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

Siehe den Ordner, in dem die Klassendateien generiert werden. Wenn sich die Datei input.txt nicht in diesem Ordner befindet, legen Sie sie dort ab und versuchen Sie, den Code erneut auszuführen.

+0

Es war im selben Ordner, deshalb bin ich mir nicht sicher, warum das passiert ist. Ich habe ein neues Projekt erstellt und die Klasse mit dem Standardpaketnamen verlassen und es hat funktioniert ... warum das funktioniert hat? Ich werde es nie wissen. Die Eingabe war immer im selben Ordner wie die Klasse, also weiß ich nicht, was passiert ist –

+0

im selben Ordner wie die Java-Dateien. Haben Sie den Ordner überprüft, in dem die .class-Dateien generiert wurden? – sul

1

Der Fehler "Unhandled Ausnahmetyp FileNotFoundException" kann durch Ausnahmebehandlung in Ihrer main() -Methode gelöst werden. Fügen Sie den folgenden Befehl in Ihrem Code hinzu.

public static void main(String[] args) throws FileNotFoundException 

Führen Sie das Programm aus, und Sie sollten den Speicherort der Datei input.txt abrufen.

Sie können mehr über Ausnahme erfahren here.

Prost

Verwandte Themen