Wie lese ich eine Textdatei mit dem Scanner in Java?

8

Dies ist mein Code zum Lesen einer Textdatei. Wenn ich diesen Code ausführe, sagt die Ausgabe immer "File not found.", Was die Nachricht von FileNotFoundException ist. Ich bin mir nicht sicher, was das Problem in diesem Code ist.

Anscheinend ist das ein Teil des Java. Für die gesamte Java-Datei muss der Benutzer etwas eingeben und eine Textdatei erstellen, die die Eingabe als Namen verwendet. Danach sollte der Benutzer den Namen der zuvor erstellten Textdatei erneut eingeben (vorausgesetzt, der Benutzer gibt die Eingabe korrekt ein) und dann sollte das Programm die Textdatei lesen. Ich habe andere Teile meines Programms richtig gemacht, aber das Problem ist, wenn ich den Namen wieder gebe, es kann die Textdatei einfach nicht finden, obwohl sie in demselben Ordner sind.

%Vor%     
user764073 21.05.2011, 15:06
quelle

6 Antworten

4

Nun .. Anscheinend existiert die Datei nicht oder kann nicht gefunden werden. Versuchen Sie es mit einem vollständigen Pfad. Sie lesen wahrscheinlich aus dem falschen Verzeichnis, wenn Sie den Pfad nicht angeben, außer a.txt befindet sich in Ihrem aktuellen Arbeitsverzeichnis.

    
GolezTrol 21.05.2011 15:10
quelle
4

Wenn Sie in einer IDE wie Eclipse oder NetBeans arbeiten, sollten Sie die Datei a.txt im Stammverzeichnis Ihres Projekts haben. (und nicht in dem Ordner, in dem Ihre .class -Dateien erstellt wurden oder anderswo)

Wenn nicht, sollten Sie den absoluten Pfad zu dieser Datei angeben.

Bearbeiten:
Sie würden die .txt -Datei an der gleichen Stelle mit der .class (normalerweise auch die .java -Datei, weil Sie im selben Ordner kompilieren) kompilierte Dateien, wenn Sie es manuell mit javac kompilieren. Dies liegt daran, dass der relative Pfad verwendet wird und der Pfad der JVM den Pfad angibt, in dem sich die ausführbare Datei befindet.

Wenn Sie eine IDE verwenden, generiert sie die kompilierten Dateien für Sie mit einem Makefile oder etwas ähnlichem für Windows und berücksichtigt deren Standard-Dateistruktur. Daher weiß er, dass der relative Pfad vom Stammordner des Projekts aus beginnt / p>     

Iulius Curt 21.05.2011 15:20
quelle
0

Ich würde empfehlen, die Datei als Ressource zu laden und den Eingabestream in eine Zeichenfolge umzuwandeln. Dies gibt Ihnen die Flexibilität, die Datei irgendwo relativ zum Klassenpfad zu laden

    
kuriouscoder 21.05.2011 15:45
quelle
0

Wenn Sie einem Scanner-Objekt einen String geben, wird es als Daten eingelesen. Das heißt, "a.txt" öffnet keine Datei namens "a.txt". Es liest buchstäblich die Zeichen 'a', '.', 'T' usw. ein.

Dies entspricht Core Java Volume I, Abschnitt 3.7.3.

Wenn ich eine Lösung zum Lesen der tatsächlichen Pfade finde, werde ich zurückkehren und diese Antwort aktualisieren. Die Lösung, die dieser Text bietet, ist die Verwendung von

%Vor%

Aber ich kann das nicht zum Laufen bringen, weil Path vom Compiler nicht als Variable erkannt wird. Vielleicht fehlt mir eine Importaussage.

    
Kimberly W 10.01.2014 03:48
quelle
0

Dies sollte dir helfen ..:

%Vor%     
Hussein Okasha 21.03.2016 10:58
quelle
0

Nur noch eine Sache ... Anstelle von System.out.println("Error Message Here") verwenden Sie System.err.println("Error Message Here") . Auf diese Weise können Sie die Unterschiede zwischen Fehlern und normalem Codeverhalten erkennen, indem Sie die Fehler (d. H. Alles in System.err.println() ) rot anzeigen.

HINWEIS : Funktioniert auch mit System.err.print("Error Message Here")

    
JavaBoss 28.05.2016 15:44
quelle

Tags und Links