Wie übergebe ich eine Textdatei als Argument?

8

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?

    
Victor 22.07.2010, 14:25
quelle

6 Antworten

8

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:

%Vor%

oder

%Vor%     
BalusC 22.07.2010, 14:43
quelle
1

Geben Sie einen absoluten Pfad zum Dateinamen ein.

Veröffentlichen Sie den Code, damit wir sehen können, was genau Sie versuchen.

    
chimeracoder 22.07.2010 14:26
quelle
0

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.

    
perimosocordiae 22.07.2010 14:38
quelle
0

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).

    
Omry Yadan 22.07.2010 14:41
quelle
0

Die einfachste Lösung besteht darin, eine neue Datei zu erstellen und dann zu sehen, wo sich die Ausgabedatei befindet. Das ist der richtige Ort, um Ihre Eingabedatei zu speichern.

    
Truong Ha 22.07.2010 14:50
quelle
0

Wenn Sie die Datei und die damit arbeitende Klasse unter dasselbe Paket legen, können Sie Folgendes verwenden:

%Vor%

Es hilft, wenn Sie etwas über Klassenlader lesen.

    
Govan 22.07.2010 14:39
quelle

Tags und Links