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 / ???

È stato utile?

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"

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top