Wie geben Sie Dateipfad in java?
Habe ich eine java-Anwendung für Debian-Linux." Jetzt möchte ich, dass diese Anwendung liest eine Datei in das Verzeichnis gelegt, wo die jar-Datei der Anwendung angegeben ist. Also, was ist zu geben auf das argument des File-Objekts?
File fileToBeReaded = new File(...);
Was zum angeben als argument für die obige Aussage zu spezifizieren, den relativen Pfad für den Pfad wo die jar-Datei der Anwendung platziert wurde?
- Der Titel sollte vielleicht sein: "Wie, um herauszufinden, wo mein Programm installiert ist Java?"
- genau, das ist es, was ich beabsichtigte. Thx für den downvote
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wissen, den Namen der Datei, natürlich ist es einfach
Wenn Sie nicht wissen, den Namen, die Sie verwenden können, das File-Objekt list () - Methode auf, um eine Liste der Dateien im aktuellen Verzeichnis, und wählen Sie die, die Sie wollen.
Mittels relativer Pfade, die im
java.io.File
ist vollständig abhängig von dem aktuellen Arbeitsverzeichnis. Dies unterscheidet sich mit der Art und Weise führen Sie die JAR. Wenn Sie zum Beispiel in/foo
und führen Sie die JAR vonjava -jar /bar/jar/Bar.jar
dann das Arbeitsverzeichnis ist immer noch/foo
. Aber wenn Siecd
zu/bar/jar
und ausführenjava -jar Bar.jar
dann das Arbeitsverzeichnis ist/bar/jar
.Wenn Sie möchten, dass der root-Pfad wo die JAR liegt, eine der Möglichkeiten wäre:
Dies gibt den root-Pfad der JAR-Datei (ich.o.w. die classpath-root). Wenn Sie Ihre Ressourcen relativ zum classpath-root, Sie können es wie folgt:
Alternativ können Sie auch einfach verwenden:
java.io.File
verweisen auf eine KRIEG-gepackte Datei funktioniert nicht immer. Bevor eine Antwort zu geben, solltest du besser erstmal sagen, was genau Sie brauchen dieseFile
- und warumInputStream
ist nicht ausreichend. E. g. vielleicht brauchen Sie diese für einige 3rd-party-API, die hartnäckig nur akzeptiertFile
und nichtInputStream
wie iText PDF.Image logo = Image.getInstance(path)
ausgesetzt von iText PDF. Ich sehe, dass es eine überladene Methode, die eineInputstream
Objekt. Aber andere Anforderung für das laden einer font-Datei(Arabisch)BaseFont baseNormalFont = BaseFont.createFont(PATH, BaseFont.IDENTITY_H, true);
ich brauche den Pfad zu der gleichen Datei. Zur Zeit habe ich die Datei unter einem separaten Konfigurations-Ordner in linux , und gab dann den WegSystem.getProperty(".....path to the conf folder") + further path to font file
.Ich denke, das sollte den trick tun:
Diese Weise wird die Datei gesucht werden, die in der
user.dir
Eigenschaft, die Ihre app Arbeitsverzeichnis.Fragen Sie über escape-Zeichen Fragen?
Wenn das der Fall ist, dann verwenden Sie Schrägstriche anstelle von rückwärts-Schrägstrichen wie
statt
Könnten Sie Fragen, Ihren classloader geben Sie den Speicherort der jar:
...aber ich würde vorschlagen, um die Datei, die Sie suchen, innerhalb Ihrer jar-Datei und Lesen Sie es als eine Ressource (
getClass().getResourceAsStream( "myFile.txt" )
).