En la aplicación web Java, supongamos que si quiero obtener el InputStream de un archivo XML, que se coloca en CLASSPATH (es decir, dentro de la carpeta fuentes), ¿cómo ¿Lo hago?Obtener la ruta de entrada de un recurso classpath (archivo XML)
Respuesta
ClassLoader.getResourceAsStream()
.
Como se indica en el comentario siguiente, si se encuentra en un entorno de varios ClassLoader
(como pruebas unitarias, aplicaciones web, etc.) es posible que deba utilizar Thread.currentThread().getContextClassLoader()
. Ver http://stackoverflow.com/questions/2308188/getresourceasstream-vs-fileinputstream/2308388#comment21307593_2308388.
someClassWithinYourSourceDir.getClass(). GetResourceAsStream();
o 'getClass(). GetResourceAsStream (" ... ")' etc. – rogerdpack
Eso depende de dónde exactamente se encuentra el archivo XML. ¿Está en la carpeta de fuentes (en el "paquete predeterminado" o en la "raíz") o en la misma carpeta que la clase?
En el caso anterior, debe usar "/file.xml
" (observe la barra diagonal) para encontrar el archivo y no importa qué clase use para tratar de ubicarlo.
Si el archivo XML está junto a alguna clase, SomeClass.class.getResourceAsStream()
con el nombre de archivo es el camino a seguir.
ClassLoader.class.getResourceAsStream("/path/to/your/xml")
y asegúrese de que su script de compilación está copiando el archivo xml en su CLASSPATH.
ClassLoader.class.getResourceAsStream("/path/file.ext");
pero si implementa web la aplicación en tomcat de esta manera obtendrá el error: 'java.lang.NullPointerException: null', y la manera más simple, creo que es 'new ClassPathResource ("/ruta/a/su/archivo "). getInputStream()' – zhuguowei
Algunos de los "getResourceAsStream()" opciones en esta respuesta no funcionó para mí, pero éste hizo:.
SomeClassWithinYourSourceDir.class.getClassLoader() getResourceAsStream ("yourResource");
Por defecto, cada recurso añadido a la ruta de clases en una aplicación web se copia bajo WEB-INF/classes carpeta en la guerra desplegada.
usted puede manejar esto mientras que el desarrollo de la aplicación en Eclipse a través de:
proyecto Haga clic derecho -> propiedades -> Java Build Path -> pestaña Fuente -> carpeta de salida predeterminada
En el servlet, puede acceder al recurso prefijando su ruta con '/' que apunta a WEB-INF/classes.
Por ejemplo, el fin de acceder pdf-sample.pdf bajo WEB-INF/classes, puede utilizar el siguiente:
getClass().getResourceAsStream("/pdf-sample.pdf")
Este tutorial explica muy bien las posibles formas de lectura un archivo de recursos de classpath en una aplicación java, vale la pena leerlo.
Intenté la solución propuesta y la barra diagonal en el nombre del archivo no funcionó para mí, por ejemplo: ...(). GetResourceAsStream ("/ my.properties"); null fue devuelto
Eliminando la barra trabajada: .... getResourceAsStream ("my.propiedades ");
Aquí es de API doc: Antes de delegación, un nombre de recurso absoluta se construye a partir del nombre de recurso dado usando este algoritmo:
If the name begins with a '/' ('\u002f'), then the absolute name of the resource is the portion of the name following the '/'.
Otherwise, the absolute name is of the following form:
modified_package_name/name
Where the modified_package_name is the package name of this object with '/' substituted for '.' ('\u002e').
- 1. Lectura del archivo xml de un recurso
- 2. Obtener ruta del recurso de Android
- 3. Recurso Classpath dentro del jar
- 4. Inyectando un recurso classpath en un bean Spring 3
- 5. carga un archivo (xml) desde el classpath en una aplicación web de primavera
- 6. cómo obtener la ruta de recurso mediante subtrazado Usando NSBundle
- 7. Ruta completa desde la entrada de archivo usando jQuery
- 8. Obtener el tamaño de un recurso de archivo de Android?
- 9. xslt obtener la ruta actual de la carpeta del archivo
- 10. Android Eclipse Classpath: quiero agregar la ruta del contenedor classpath, pero eclipse no me permite
- 11. ¿Cómo puedo descubrir la "ruta" de un recurso incrustado?
- 12. Primavera: Inyectar URL para el recurso classpath
- 13. resorte dentro de la guerra no puede encontrar el recurso ruta de clase en un archivo jar interior
- 14. Configuración de la plantilla freemarker de classpath
- 15. Obtener un recurso con getResource()
- 16. cómo agregar un archivo xml al classpath de la aplicación java en eclipse?
- 17. Recurso de Java como archivo
- 18. ¿Cómo obtener classpath de classloader?
- 19. recurso de carga desde cualquier punto de la ruta de clase
- 20. .classpath archivo en la pregunta de eclipse
- 21. XML dentro de un recurso de cadena de Android?
- 22. Cargando archivo XML que está en classpath en Java
- 23. Falta la entrada de ruta de clase en Eclipse
- 24. ¿Cómo agrego un icono como recurso classpath a una ventana SWT creada con WindowBuilder?
- 25. Obtener ruta de archivo completa en java
- 26. IOException que analiza el documento XML del recurso de ruta de clase
- 27. En un archivo MAKE, ¿cómo obtener la ruta relativa de una ruta absoluta a otra?
- 28. Dado un recurso classpath, ¿hay alguna forma de obtener el objeto java.io.File que lo tiene/lo contiene?
- 29. Cómo obtener la ruta de la imagen de la etiqueta <img src="?"> de archivo XML
- 30. Obtener la ruta absoluta de un archivo dentro de un JAR dentro de un EAR?
ver post personal para un ejemplo de código: http://tshikatshikaaa.blogspot.nl/2012/07/maven-how-to-access-filesdata-in.html – JVerstry
Si se encuentra en un entorno de cargador de varias clases (como pruebas unitarias/aplicaciones web, etc.), es posible que deba utilizar este hilo. .currentThread(). getContextClassLoader(). Consulte http://stackoverflow.com/questions/2308188/getresourceasstream-vs-fileinputstream/2308388#comment21307593_2308388 – khylo
Agregue la sugerencia de @ khylo a su respuesta! – froginvasion