Différentes façons de charger un fichier en tant qu'InputStream
Introduction :
Java fournit plusieurs méthodes pour charger un fichier en tant que InputStream. Cet article explore les différences entre les approches suivantes :
Interprétation du paramètre fileName :
Chaque méthode interprète le paramètre fileName différemment. ClassLoader.getResourceAsStream() traite tous les chemins comme absolus, tandis que Class.getResourceAsStream() les considère comme relatifs au package de la classe appelante.
Cas d'utilisation appropriés :
1. Utilisation de Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName)
Cette méthode est recommandée lors du chargement d'un fichier qui fait partie du chemin de classe de l'application et empaqueté dans le même JAR ou EAR que l'appelant classe. Il donne accès aux ressources de chemin de classe quel que soit l'emplacement de la classe ou du package.
2. En utilisant this.getClass().getResourceAsStream(fileName)
Cette méthode convient au chargement de fichiers situés dans le même package que la classe appelante. Ceci est particulièrement utile lorsque le fichier est emballé dans un JAR et accessible via le chemin de classe.
3. Utilisation de this.getClass().getClassLoader().getResourceAsStream(fileName)
Cette méthode est similaire à Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName) mais est moins couramment utilisée. Il charge également les fichiers à partir du chemin de classe de l'application, mais son comportement peut varier en fonction de l'implémentation du chargeur de classe.
Avertissement pour les utilisateurs de Tomcat 7 :
Dans Tomcat 7 et versions antérieures , ClassLoader.getResourceAsStream() et Class.getResourceAsStream() ne peuvent pas gérer les noms de ressources contenant des barres obliques (/) de manière cohérente comme spécifié par le Javadoc. Assurez-vous toujours d’une normalisation correcte lorsque vous utilisez ces méthodes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!