Wie würde ich den Namen einer Datei im Klassenpfad in einen echten Dateinamen konvertieren?Konvertieren eines Klassenpfaddateinamens in einen echten Dateinamen
Angenommen, das Verzeichnis "C:\workspace\project\target\classes"
befindet sich in Ihrem Klassenpfad. In diesem Verzeichnis befindet sich eine Datei, z. B. info.properties
.
Wie würden Sie (zur Laufzeit) den absoluten Dateipfad zur Datei info.properties ermitteln, vorausgesetzt, nur die Zeichenfolge "info.properties"
? Das Ergebnis wäre etwas wie "C:\workspace\project\target\classes\info.properties"
.
Warum ist das nützlich? Beim Schreiben von Komponententests möchten Sie möglicherweise auf Dateien zugreifen, die in Ihren Testressourcen gebündelt sind (src/main/resources
). Sie arbeiten jedoch mit einer Bibliothek eines Fremdanbieters oder einem anderen System, das einen echten Dateinamen und keine relative Klassenpfadreferenz erfordert.
Hinweis: Ich habe diese Frage selbst beantwortet, da ich finde, dass es ein nützlicher Trick ist, aber es sieht so aus, als ob niemand jemals diese Frage gestellt hat.
Was wird das produzieren, wenn die Ressource in einem Glas ist? – radai
@radai Hier ist ein Beispiel für das Ergebnis einer Datei in einem Jar: 'file:/C: /tools/some/path/jarfile.jar!/Internal/path/file.txt'. Um eine solche Datei mit der obigen Antwort zu finden, müssen Sie einen Pfad relativ zum jar root angeben - d. '" internal/path/file.txt "' – GreenGiant
@radai Überprüfen Sie auch [dies] (http://stackoverflow.com/questions/12025689/filenotfundedexception-when-exporting-jar/12025740#12025740) –