chargement d'un fichier de classpath
J'ai une ligne de code qui est : File file = new File(getFile())
dans une classe java HandleData.java
Méthode - getFile()
prend la valeur de la propriété fileName
. Et fileName
est injecté par application_context.xml
avec un haricot section de la classe - HandleData comme ci-dessous:
<bean id="dataHandler" class="com.profile.transaction.HandleData">
<property name="fileName" value="DataFile.xml"></property>
</bean>
- Je construire le projet avec succès et vérifié que - DataFile.xml
est présent dans WEB-INF/classes
. Et la HandleData.class est présent dans WEB-INF/classes/com/profile/transacon
Mais quand je le lance il me jette filenotfound exception.
Si j'injecte le chemin d'accès absolu (C:\MyProjectWorkspace\DataProject\target\ProfileService\WEB-INF\classes\DataFile.xml
il trouve le fichier correctement.).
Quelqu'un pourrait-il aider à déterminer le bon chemin pour être injecté de manière que le fichier est pris du chemin de classe ?
OriginalL'auteur Steer360 | 2013-03-08
Vous devez vous connecter pour publier un commentaire.
Tout en injectant un
File
est généralement l'approche privilégiée, vous pouvez également profiter du Printemps ResourceLoader pour le chargement dynamique des ressources.Généralement, c'est aussi simple que d'injecter de l'
ResourceLoader
dans votre Printemps bean:De les charger depuis le classpath:
OriginalL'auteur helmy
Depuis l'OP est l'injection Uniquement le nom de fichier par le biais de printemps, encore voulez créer le Fichier de l'Objet à l'aide de code ,
Vous devez Utiliser ClassLoadeer pour lire le fichier
Essayer cette
Modifier
Heres le reste du code , pour lire le fichier
Edit 2
Puisque vous voulez que le Fichier Objet, pour obtenir la main de la FileInputStream
essayer cette
Il déclenche une erreur - Le constructeur de Fichier(URL) n'est pas défini
Je suis en train d'utiliser votre suggestion et de l'utilisation InputStream à la place. Actuellement, je suis passant le nom de fichier comme ci-dessous: FileInputStream fisTargetFile = new FileInputStream(new File(fileName)); InputStream ne fonctionne pas pour cette pièce.
Oui. Il a travaillé! Ne pouvait pas utiliser classpath:DataFile.xml (je suis surpris) dans la valeur de la propriété. Je pense que les œuvres lorsque nous évoquons le contexte avec l'annotation. J'ai donc gardé la valeur "DataFile.xml". J'ai utilisé InputStream is = HandleData.classe.getClassLoader().getResourceAsStream(getFile())); et est transmise à la méthode d'appel qui est IOUtils de org.apache.commons.io et prend InputStream Paramètre ainsi !! Merci beaucoup.
Heureux, il a travaillé.Veuillez cocher la réponse acceptée . Cheers
OriginalL'auteur Sudhakar
Vous devriez avoir:
Et il doit être injecté sous forme de
org.springframework.core.io.Resource
similaire à cette réponseOuais, bon catch.
J'ai effectivement essayé, il me montre FileNotFoundException comme classpath:DataFile.xml ne peut pas être trouvé.
êtes-vous sûr?
classpath:DataFile.xml
dit trouver DataFile.xml dans la racine de quoi que ce soit dans le classpath de WEB-INF/classes est un élément...oui. La ligne - File fichier = new File(getFile()) est appelée.Il est donc d'obtenir la valeur classpath:DataFile.xml maintenant. Je viens de vérifier avec une instruction print.
OriginalL'auteur Lucas