Comment extraire.fichiers de guerre en java? ZIP vs POT
J'ai un programme web où je veux que l'utilisateur soit en mesure d'importer un .war
fichier et je peux extraire certains fichiers de la .war
fichier. J'ai trouvé deux bibliothèques de classes: java.util.zip.*
et java.util.jar.*
. D'après ce que je comprends, un fichier WAR est un fichier JAR spécial qui est un fichier ZIP spécial. Serait-il donc préférable d'utiliser java.util.jar
? Si les fichiers ZIP et JAR sont à peu près les mêmes, pourquoi faut-il deux bibliothèques différentes?
8 answers
Si vous regardez l'API JarFile, vous verrez que c'est une sous-classe de la classe ZipFile.
Les classes spécifiques à jar ajoutent simplement des fonctionnalités spécifiques à jar, comme la prise en charge directe des attributs de fichier manifeste, etc.
C'est OOP "en action"; puisque les fichiers jar sont des fichiers zip, les classes jar peuvent utiliser la fonctionnalité zip et fournir un utilitaire supplémentaire.
WAR file est juste un fichier JAR, pour l'extraire, il suffit d'émettre la commande jar suivante -
jar -xvf yourWARfileName.war
Si la commande jar n'est pas trouvée, ce qui arrive parfois dans l'invite de commande Windows, spécifiez le chemin complet, c'est-à-dire dans mon cas,
c:\java\jdk-1.7.0\bin\jar -xvf my-file.war
Renommez simplement le .war
en .jar
et décompressez-le en utilisant Winrar
(ou tout autre gestionnaire d'archives).
Si vous utilisez Linux ou Ubuntu, vous pouvez extraire directement les données du fichier .war
.
Un fichier war
est juste un fichier jar
, pour l'extraire, il suffit d'émettre la commande suivante en utilisant le programme jar
:
jar -xvf yourWARfileName.war
Comme vous l'avez dit, un jar est un fichier zip (pas un type spécial, mais juste un ancien zip), donc l'une ou l'autre bibliothèque pourrait fonctionner. Le raisonnement est que la personne moyenne, voir *.extension zip, a tendance à décompresser. Depuis le serveur d'application veut décompressé, un simple renommer empêche les gens de le décompresser simplement par habitude. Pareillement, *.le fichier de guerre doit également rester non compressé.
Java.util.jar ajoute simplement des fonctionnalités supplémentaires à java.util.zip avec très peu frais généraux supplémentaires. Laissez le java.util.jar être une aide dans l'affichage,etc... et de l'utiliser.
La classe/paquet Jar est pour des mécanismes de fichier Jar spécifiques où il y a un manifeste qui est utilisé par les fichiers Jar dans certains cas.
La classe/paquet de fichier Zip gère tous les fichiers compressés qui incluent des fichiers Jar, qui est un type de fichier compressé.
Les classes Jar étendent ainsi les classes de package Zip.
Vous pouvez utiliser un retournement et simplement déployer l'application dans le serveur tomcat: il suffit de copier/coller sous le dossier webapps. Une fois tomcat démarré, il créera un dossier avec le nom de l'application et vous pourrez accéder directement au contenu
Pour les utilisateurs mac: dans la commande terminal:
unzip yourWARfileName.war