Comment obtenir des fichiers à partir du dossier des ressources. Cadre de printemps
Je suis en train de unmarshal mon fichier 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();
}
}
}
Mais j'obtiens cette erreur:
java.io.FileNotFoundException: null (Aucun fichier ou répertoire)
Voici ma structure:
Pourquoi je ne peux pas récupérer des fichiers à partir du dossier de ressources? Merci.
Mise à jour.
Après le remaniement,
URL URL = ce.getClass().getResource("/xmlToParse/companies.xml");
File fichier = new File(url.getPath());
Je peux voir une erreur plus clairement:
java.io.FileNotFoundException: /content/ROOT.war/WEB-INF/classes/xmlToParse/companies.xml (Aucun fichier ou répertoire)
Il essaie de trouver des WEB-INF/classes/
J'ai ajouté le dossier de là, mais toujours ce message d'erreur 🙁
source d'informationauteur Tom Wally
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème en essayant de charger des fichiers XML dans mes classes de test. Si vous utilisez le Printemps, comme on peut le suggérer à partir de votre question, le plus simple est d'utiliser org.springframework.de base.io.Ressources - une Raphaël Pourritureh déjà mentionné.
Le code est très simple. Il suffit de déclarer un champ de type org.springframework.de base.io.Ressources et de les annoter avec org.springframework.les haricots.usine.annotation.Valeur - comme ça:
Pour obtenir le nécessaire InputStream, il suffit d'appeler
et vous devriez être bien 🙂
Mais pardonnez-moi, je dois demander une chose: Pourquoi voulez-vous mettre en œuvre un parseur XML avec l'aide de Printemps? Il y a beaucoup de build 🙂 E. g. pour les services web, il existe de très bonnes solutions que marshall votre XMLs dans des Objets Java et à l'arrière...
vous supposez que de donner un chemin absolu (donc ajouter un chargement /, où les ressources dossier est le dossier racine du dossier):