Accès aux chemins de ressources dans les fichiers Java JAR
Lorsque vous travaillez avec des ressources stockées dans un fichier Java JAR, il est possible d'obtenir un chemin d'accès à la ressource stimulant. Contrairement aux fichiers classiques stockés sur le système de fichiers, les ressources d'un JAR n'ont pas nécessairement un fichier correspondant directement.
L'extrait de code fourni illustre ce problème :
ClassLoader classLoader = getClass().getClassLoader(); File file = new File(classLoader.getResource("config/netclient.p").getFile());
Ce code génère un FileNotFoundException car la ressource n'est pas accessible en tant que fichier physique sur le système de fichiers. Le fichier JAR n'a peut-être pas été développé en fichiers individuels et le chargeur de classe lui-même peut ne pas fournir d'identifiant de fichier à la ressource.
Solution alternative
Pour obtenir le contenu d'une ressource dans un fichier JAR, une approche alternative consiste à utiliser classLoader.getResourceAsStream() :
ClassLoader classLoader = getClass().getClassLoader(); PrintInputStream(classLoader.getResourceAsStream("config/netclient.p"));
Ce code lit et imprime le contenu de la ressource directement, sans nécessiter l'accès à un chemin de fichier. S'il devient absolument nécessaire d'accéder à la ressource sous forme de fichier, vous pouvez copier le flux dans un fichier temporaire :
File tempFile = File.createTempFile("temp", null); try ( InputStream inputStream = classLoader.getResourceAsStream("config/netclient.p"); OutputStream outputStream = new FileOutputStream(tempFile); ) { IOUtils.copy(inputStream, outputStream); }
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!