2012-07-13 6 views

Respuesta

8

Use getResourceAsStream (docs), puede hacer lo que quiera con eso después de eso.

Para un dos líneas, puede usar one of the Commons IO copy methods.

+0

getResourceAsStream le dará acceso a cualquier recurso correspondiente en la ruta de clase y no solo un archivo que contiene el "JAR actualmente en ejecución", suponiendo que se trata de un archivo JAR ejecutado con "java -jar ". – jarnbjo

+0

@jarnbjo Sí. Y si el recurso no está debidamente empaquetado, es * posiblemente * un problema, pero dada la pregunta, creo que el problema es mucho más amplio que necesitarlo * específicamente * del "contenedor en ejecución", con exclusión de todos los demás recursos empaquetados exactamente igual. –

+0

Eso hizo el truco. ¡Gracias! – Konstantin

16
File file = new File("newname.ext"); 
if (!file.exists()) { 
    InputStream link = (getClass().getResourceAsStream("/path/resources/filename.ext")); 
    Files.copy(link, file.getAbsoluteFile().toPath()); 
} 
+0

Tenga en cuenta que parte de la implementación de Files.copy (java.nio.file.Files) no cierra la secuencia de entrada -> posible pérdida de memoria. – Vity

Cuestiones relacionadas