Pregunta

Estoy tratando de obtener la ruta a un archivo que se encuentra fuera de la jarra java y no quiero utilizar una ruta absoluta. Un exampel: supongamos que el frasco se encuentra en ~ / lib / myjar.jar y el archivo se encuentra en la misma carpeta. Lo que he intentando es algo como esto, pero falla:

File myfile = new File(this.getClass().getResource("../../../").toURI());

Nota: mi paquete es com.contro.gui, es por eso que tengo "../../../", con el fin de Acceso a la 'raíz'

No estoy seguro de cómo puedo acceder al archivo. ¿¿Cualquier sugerencia?? Y ¿qué pasa si el archivo que quiero de acceso está en otra carpeta como ~ / res / ???

¿Fue útil?

Solución

Si el archivo está en el mismo directorio que el frasco, creo que este trabajo (se siente bastante hacky, pero ...):

URL url = getClass().getProtectionDomain().getCodeSource().getLocation();
File myfile = new File(url.toURI());
File dir = myfile.getParentFile(); // strip off .jar file

(¿No han probado esto, pero parece factible. Sólo funcionará con los tarros basados ??en archivos, por supuesto).

Si el archivo está en algún lugar al azar, creo que tendrá que o bien pase en parámetros o detectar ubicaciones "conocidos" como user.home. (O, siempre se puede poner el archivo en el frasco una getResource() uso.)

Otros consejos

No se acaba de hacer

     File FileName = new File(".");
     String Directory = FileName.getCanonicalPath();

que le conseguirá el directorio padre de su clase en un archivo o un tarro sólo recuerda a establecer el directorio si es en un frasco como este "NameOfJar \ NameOfFolder \ etc"

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top