Come ottenere un percorso a una risorsa / file di fuori di un file JAR Java
Domanda
Sto cercando di ottenere il percorso di un file che si trova fuori dal vaso Java e non voglio usare un percorso assoluto. Un exampel: Diciamo che il vaso si trova in ~ / lib / myjar.jar e il file si trova nella stessa cartella. Quello che ho cercando è qualcosa di simile, ma non riesce:
File myfile = new File(this.getClass().getResource("../../../").toURI());
Nota: il mio pacchetto è com.contro.gui, è per questo che ho "../../../", al fine di accesso alla 'radice'
Non sono sicuro di come posso accedere al file. Qualche suggerimento?? E che dire se il file che voglio di accesso è in un'altra cartella, come ~ / res / ???
Soluzione
Se il file si trova nella stessa directory del vaso, penso che questo lavoro sarà (si sente abbastanza hacky, ma ...):
URL url = getClass().getProtectionDomain().getCodeSource().getLocation();
File myfile = new File(url.toURI());
File dir = myfile.getParentFile(); // strip off .jar file
(non hanno testato questo, ma sembra fattibile. Sarà solo il lavoro con i vasi basati su file, ovviamente).
Se il file è in qualche posizione casuale, penso che è necessario sia passata in parametri o controllare "noti" luoghi come user.home
. (Oppure, si potrebbe sempre mettere il file nel vaso un getResource()
uso.)
Altri suggerimenti
Non basta fare
File FileName = new File(".");
String Directory = FileName.getCanonicalPath();
che ti porterà la directory padre della classe in un file o vaso ricordare solo per impostare la directory se è in un vaso come questo "NameOfJar \ NameOfFolder \ etc"