Une tâche courante lorsque l'on travaille avec des archives JAR consiste à répertorier les fichiers qu'elles contiennent. Cela peut être utile à diverses fins, telles que l'extraction de fichiers spécifiques ou la création d'un inventaire du contenu de l'archive.
Java fournit un ensemble complet de classes pour gérer les fichiers ZIP, y compris les archives JAR. La classe ZipInputStream vous permet de parcourir les entrées d'un fichier JAR et d'accéder à leurs métadonnées.
Pour lister les fichiers dans un JAR, suivez ces étapes :
Le code suivant montre un exemple de liste de tous les fichiers dans un JAR :
CodeSource src = MyClass.class.getProtectionDomain().getCodeSource(); if (src != null) { URL jar = src.getLocation(); ZipInputStream zip = new ZipInputStream(jar.openStream()); while (true) { ZipEntry e = zip.getNextEntry(); if (e == null) { break; } System.out.println(e.getName()); } } else { System.out.println("JAR not found"); }
En Java 7, une nouvelle fonctionnalité a été introduite pour simplifier le processus de travail avec les fichiers ZIP. La classe FileSystem peut être utilisée pour monter un fichier ZIP en tant que système de fichiers en lecture seule. Cela vous permet d'utiliser les bibliothèques d'E/S Java standard pour parcourir et répertorier le contenu du fichier JAR.
Le code suivant montre un exemple d'utilisation de la classe FileSystem pour répertorier les fichiers dans un JAR :
Path jarPath = Paths.get("/path/to/my.jar"); FileSystem fs = FileSystems.newFileSystem(jarPath, null); Path root = fs.getPath("/"); Files.walk(root) .filter(path -> path.toString().startsWith("path/to/your/dir/")) .forEach(System.out::println);
Ce code utilise la classe Files, qui fournit une API de haut niveau pour travailler avec des fichiers et des répertoires, pour parcourir le répertoire racine du fichier JAR et filtrer tous les fichiers qui ne correspondent pas à celui souhaité. critère.
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!