L'exemple de cet article indique la méthode de lecture des données du fichier JAR de Java. Partagez-le pour tout le monde pour votre référence. Les détails sont les suivants:
Les fichiers Java Archives (JAR) sont basés sur les solutions de packaging Java Technology. Ils permettent aux développeurs d'emballer tous les contenus connexes (.class, images, son, les fichiers de support, etc.) dans un seul fichier. Le format de fichier JAR prend en charge la compression, l'authentification et les versions, et de nombreuses autres fonctionnalités.
C'est une chose difficile d'obtenir le contenu de fichier contenu dans le fichier JAR, mais ce n'est pas possible. Cette technique vous indiquera comment obtenir un fichier à partir du fichier JAR. Nous obtiendrons d'abord le répertoire de fichiers dans ce fichier JAR, puis lirons le fichier spécifié.
Si vous connaissez le format zip commun, vous constaterez que le fichier JAR n'en est pas très différent. Le fichier JAR fournit une méthode pour emballer plusieurs fichiers sur un seul fichier, et chaque fichier emballé peut être compressé séparément. Les fichiers JAR peuvent ajouter une chose appelée Manifest, qui permet aux développeurs d'ajouter d'autres informations liées au contenu. Par exemple, Manifest peut indiquer quels fichiers dans le fichier JAR pour commencer à exécuter les applications ou spécifier la version de la bibliothèque.
Java 2 SDK Standard Edition fournit un outil en pot que vous pouvez lire et écrire des fichiers JAR via lui via. Ensuite, vous souhaitez peut-être lire et écrire des fichiers JAR dans votre programme. (Cette technique implique uniquement le contenu de la lecture des fichiers JAR dans le programme.) Très heureux, vous pouvez le faire, et vous n'avez pas besoin de considérer le problème de la décompression, car la bibliothèque de classe vous a aidé à le gérer. Les classes que vous devez utiliser sont dans java.util.jar. La classe principale à utiliser ici est la classe JarFile, qui est un fichier .jar lui-même. Chaque fichier est cité par Jarentry.
Au début, passez un paramètre pour créer une instance JarFile pour le constructeur de JarFile.
Copier le code du code comme suit: JarFile jarfile = new Jarfile ("thefile.jar");
Ou copiez le code de code comme suit: fichier file = new File ("thefile.jar");
JarFile JarFile = New JarFile (fichier);
Il a également d'autres constructeurs qui prennent en charge la vérification d'identité et marquent les fichiers à supprimer. Cependant, ces constructeurs ne seront pas impliqués ici.
Après avoir obtenu une référence à un fichier JAR, vous pouvez lire le répertoire de son contenu. La méthode des entrées de JarFile renvoie l'objet d'énumération de toutes les entrées.
// Traductor Remarque: Enum est un mot-clé dans Java 5.0, donc ce cas doit compiler l'échec dans 5.0. enum = jarFile.Entries ();
Comme mentionné précédemment, chaque individu est un jarentry. Cette classe contient certaines méthodes telles que GetName, GetSize et GetCompressEtSize.
Donnons-nous un exemple comment utiliser ces fonctionnalités dans le programme. Le programme suivant affiche la liste du contenu du fichier JAR et les noms, la taille et la taille de la compression. (Ceci est similaire à la commande jar avec les paramètres "T" et "V".)
Importer java.io. *; System.out.println ("Veuillez fournir un nom de fichier JAR"); HasmoreElements ()) {Process (enum.NextElement ());}} Process static privé (objet obj) {Jarentry Entry = (Jarentry) obj; String Name = Entry.getName () ;; ));
Si vous utilisez JCE.jar dans J2SE 1.4.1 pour tester le programme Jardir ci-dessus, vous devriez voir la sortie comme ce qui suit (plus de fichiers doivent être affichés dans les éléments suivants ...): Plus de fichiers: plus de fichiers): Plus de fichiers: plus de fichiers):
Meta-inf / manifest.mf 5315 1910Meta-inf / 4jcejars.sf 5368 1958Meta-Inf / 4JceJars.DSA 2207 1503Meta-Inf / 0 2Javax / 0 0javax / Crypto / 0 0javax / Crypto / Interfaces / 0 0javax Dhkey.class 209 185javax / crypto / interfaces / dhpublickey.class 265 215javax / crypto / interfaces / dhprivatekey.class 267 215javax / crypto / secrekey.class / pbekey.class 268 224javax / crypto / secrekey.class 167 155 ...
Notez que le haut du contenu d'entrée contient les lignes de Meta-Inf, qui sont des informations de vérification mélifest et de sécurité. L'élément avec une taille de 0 n'est pas un fichier, mais un répertoire.
Pour vraiment lire le contenu du fichier à partir du fichier JAR, vous devez obtenir l'objectif de saisie correspondant InputStream. C'est différent de Jarentry. Jarentry ne comprend que des informations d'entrée, mais n'inclut pas le contenu réel. Ceci est très similaire à la différence entre le fichier et FileInputStrateam. Lorsque vous visitez uniquement le fichier, vous n'ouvrez jamais le fichier correspondant. Voici comment obtenir InputStream à partir d'une entrée:
Copier le code du code comme suit: InputStream input = jarfile.getInputStream (entrée);
Après avoir obtenu le flux d'entrée, il vous suffit de le lire comme la lecture d'autres flux. S'il s'agit d'un flux de texte, n'oubliez pas d'utiliser un lecteur pour obtenir des caractères du flux. Pour le flux d'octets, comme les images, vous devez le lire directement.
Le programme suivant démontre le contenu d'un fichier JAR. Lors de l'exécution d'un programme, vous devez spécifier le nom du fichier pour lire à partir du fichier JAR.
Import java.io. *; Veuillez fournir un nom de fichier et un fichier de jar à lire "); System.exit (-1);} JarFile JarFile = new Jarfile (args [0]); Jarentry Entry = JarFile.GetJarentry]); InputStream Input = JarFile .GetInputStream (Entry )); line = reader.readline ())!
Supposons que vous ayez un fichier JAR appelé myfiles.jar, dont l'un est appelé fichier texte Spider.txt, puis supposons que le pider.txt contient le texte suivant:
L'araignée Itsy Bitsy a couru la bouffée d'eau est venue la pluie et a lancé l'araignée
Exécutez la commande suivante pour afficher le contenu du fichier texte dans le fichier jar:
Copier le code du code comme suit: Java Jarread MyFiles.jar spider.txt
On espère que cet article est utile à la conception du programme Java de tous.