Ich versuche, ein Programm zu schreiben, um eine Textdatei über Argumente zu lesen, aber wenn ich es ausführe, sagt es immer, dass die Datei nicht gefunden werden kann, obwohl ich sie in den gleichen Ordner wie main.java gelegt habe. Kennt jemand die Lösung für mein Problem oder eine bessere Art, eine Textdatei zu lesen?
Verwenden Sie keine relativen Pfade in java.io.File
.
Es wird relativ zum aktuellen Arbeitsverzeichnis, das davon abhängt, wie Sie die Anwendung ausführen, die wiederum nicht von Ihrer Anwendung aus steuerbar ist. Es wird nur zu Portabilitätsproblemen führen. Wenn Sie es in Eclipse ausführen, ist der Pfad relativ zu /path/to/eclipse/workspace/projectname
. Wenn Sie es in der Befehlskonsole ausführen, ist es relativ zu aktuell geöffnetem Ordner (selbst wenn Sie den Code nach dem absoluten Pfad ausführen!). Wenn Sie es durch Doppelklicken auf die JAR-Datei ausführen, wird dies relativ zum Stammordner der JAR-Datei sein. Wenn Sie es auf einem Webserver ausführen, ist es relativ zu /path/to/webserver/binaries
. Und so weiter.
Verwenden Sie immer absolute Pfade in java.io.File
, keine Ausreden.
Für die beste Portabilität und weniger Probleme mit absoluten Pfaden platzieren Sie die Datei einfach in einen Pfad, der vom Klassenpfad der Laufzeit abgedeckt wird (oder fügen Sie ihren Pfad dem Klassenpfad der Laufzeit hinzu). Auf diese Weise können Sie die Datei von abrufen Class#getResource()
oder sein Inhalt von Class#getResourceAsStream()
. Wenn es sich im selben Ordner (Paket) wie Ihre aktuelle Klasse befindet, befindet es sich bereits im Klassenpfad. Um darauf zuzugreifen, tun Sie einfach:
oder
%Vor%Geben Sie einen absoluten Pfad zum Dateinamen ein.
Veröffentlichen Sie den Code, damit wir sehen können, was genau Sie versuchen.
Wenn Sie Eclipse (oder eine ähnliche IDE) verwenden, liegt das Problem an der Tatsache, dass Ihr Programm von einigen Verzeichnissen oberhalb der eigentlichen Quelle ausgeführt wird. Versuchen Sie, Ihre Datei in der Projektnavigation um eine oder zwei Ebenen zu verschieben.
Lesen Sie diese Frage für weitere Einzelheiten.
Wenn Sie eine Datei mit einem relativen Dateinamen in Java öffnen (und im Allgemeinen), wird sie relativ zum Arbeitsverzeichnis geöffnet.
Sie finden das aktuelle Arbeitsverzeichnis Ihres Prozesses mit
%Vor%Stellen Sie sicher, dass Sie Ihr Programm im richtigen Verzeichnis ausführen (oder ändern Sie den Dateinamen so, dass er relativ zu dem Ort ist, an dem Sie ihn ausführen).
Tags und Links java