name how java spring-mvc java-io fileinputstream

java - how - Cómo obtener archivos de la carpeta de recursos. Marco de primavera



set name to jframe (3)

Tuve el mismo problema al intentar cargar algunos archivos XML en mis clases de prueba. Si usa Spring, como puede sugerir su pregunta, la forma más fácil es usar org.springframework.core.io.Resource - el que Raphael Rot h ya mencionó.

El código es realmente sencillo. Simplemente declare un campo del tipo org.springframework.core.io.Resource y org.springframework.beans.factory.annotation.Value con org.springframework.beans.factory.annotation.Value - así:

@Value(value = "classpath:xmlToParse/companies.xml") private Resource companiesXml;

Para obtener el InputStream necesario, simplemente llame

companiesXml.getInputStream()

y deberías estar bien :)

Pero perdóneme, tengo que preguntar una cosa: ¿por qué quiere implementar un analizador XML con la ayuda de Spring? Hay muchos componentes incorporados :) Por ejemplo, para servicios web hay muy buenas soluciones que convierten sus XML en objetos Java y viceversa.

Estoy tratando de desmarcar mi archivo xml:

public Object convertFromXMLToObject(String xmlfile) throws IOException { FileInputStream is = null; File file = new File(String.valueOf(this.getClass().getResource("xmlToParse/companies.xml"))); try { is = new FileInputStream(file); return getUnmarshaller().unmarshal(new StreamSource(is)); } finally { if (is != null) { is.close(); } } }

Pero recibo estos errores: java.io.FileNotFoundException: nulo (no existe tal archivo o directorio)

Aquí está mi estructura:

¿Por qué no puedo obtener archivos de la carpeta de recursos? Gracias.

Actualizar.

Después de refactorizar,

URL url = this.getClass (). GetResource ("/ xmlToParse / companies.xml"); Archivo de archivo = archivo nuevo (url.getPath ());

Puedo ver un error más claro:

java.io.FileNotFoundException: /content/ROOT.war/WEB-INF/classes/xmlToParse/companies.xml (No existe tal archivo o directorio)

Intenta encontrar WEB-INF / classes / He agregado la carpeta allí, pero aún así aparece este error :(


se supone que debes dar una ruta absoluta (así que agrega una carga ´ / ´, donde carpeta de recursos es la carpeta raíz):

public Object convertFromXMLToObject(String xmlfile) throws IOException { FileInputStream is = null; File file = new File(String.valueOf(this.getClass().getResource("/xmlToParse/companies.xml"))); try { is = new FileInputStream(file); return getUnmarshaller().unmarshal(new StreamSource(is)); } finally { if (is != null) { is.close(); } } }


ClassLoader classLoader = getClass().getClassLoader(); File file = new File(classLoader.getResource("fileName").getFile());