Maison >Java >javaDidacticiel >Introduction à l'utilisation de getResourceAsStream en Java
Utiliser JAVA pour obtenir des fichiers peut sembler simple, mais pour de nombreux nouveaux arrivants comme moi, la maîtrise est encore assez superficielle et l'expérience de son utilisation est assez profonde. La méthode la plus couramment utilisée consiste à utiliser la classe File de JAVA. obtenez le fichier c:/test.txt, vous utiliserez File file = new File("c:/test.txt"); Quel est le problème avec cette utilisation? Je crois que tout le monde sait que le chemin est codé en dur. Dans l'esprit JAVA, l'application doit être créée une seule fois et disponible partout, et du point de vue pratique de l'application, l'application finale générée sera également déployée sur des systèmes d'exploitation autres que Windows. Pour Linux, utiliser les mots c:/ dans l'application signifie un échec. , nous devrions donc essayer d'éviter d'utiliser du codage en dur, c'est-à-dire d'utiliser directement des chemins absolus.
Dans l'application Servlet, il existe une méthode getRealPath(String str). Bien que cette méthode puisse également obtenir dynamiquement le chemin du fichier sans écrire directement à la main le chemin absolu, c'est également une méthode qui n'est pas recommandée. , Alors, quelle méthode avons-nous pour améliorer le fichier ?
Il s'agit des méthodes Class.getResource() et Class.getResourceAsStream(), mais beaucoup de gens ne comprennent toujours pas son utilisation, car beaucoup de gens (Par exemple, moi il n'y a pas longtemps) je ne savais pas quels paramètres devaient lui être transmis. Bien sûr, certaines personnes l'ont déjà très bien utilisé, et ces personnes n'ont pas besoin de s'en occuper. Ici, je ne fais que donner. vous avez des paramètres qui ne savent pas comment l'utiliser ou qui ne sont pas très bons dans ce domaine. Quelqu'un qui le connaît peut vous expliquer un peu.
Tout d'abord, il existe les types suivants de getResourceAsStream en Java :
1. Class.getResourceAsStream (String path) : lorsque le chemin ne commence pas par '/', il est par défaut le package où se trouve cette classe. Les ressources commençant par '/' sont obtenues à partir de la racine
ClassPath. Il construit simplement un chemin absolu à travers le chemin, et finalement la ressource est obtenue par ClassLoader.
2.Class.getClassLoader.getResourceAsStream(String path) : Par défaut, il est obtenu à partir de la racine ClassPath. Le chemin ne peut pas commencer par '/'. Enfin, la ressource est obtenue par
Chargeur de classe. 3. ServletContext.getResourceAsStream(String path) : par défaut, les ressources sont récupérées à partir du répertoire racine de WebAPP. Peu importe que le chemin commence par '/' sous Tomcat. Bien sûr, cela est lié à l'implémentation spécifique du conteneur. 4. L'objet intégré à l'application sous Jsp est une implémentation du ServletContext ci-dessus.
Au fait, les chargeurs de classes en JAVA :
par défaut du système. Thread.currentThread.getContextClassLoader() est généré de cette manière. Nous utilisons Thread.currentThread.setContextClassLoader() pour spécifier le ClassLoader correspondant pour le thread actuel, puis utilisons la méthode get pour l'obtenir.
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!