> Tech > Utilisation de fichiers Zip avec Java

Utilisation de fichiers Zip avec Java

Tech - Par iTPro.fr - Publié le 24 juin 2010
email

par Julian Monypenny
L'utilitaire Archiver unit les fonctionnalités des fichiers zip et le coding Java Le fichier zip est le format d'archivage de fichiers standard sur PC. Un fichier zip peut stocker des milliers de fichiers, et leurs chemins dans un format comprimé. Les fichiers zip font gagner de la place tout en simplifiant la distribution de fichiers multiples. De nombreuses plates-formes, dont l'AS/400 et le RS/6000, possèdent l'outil zip PkZip.

Java 2 accepte les fichiers zip. Plutôt que de fournir une version Java de PkZip, le SDK (Software Development Kit) Java inclut le package java.util.zip, qui contient des classes permettant de créer et de manipuler des fichiers zip.

Dans cet article, je présente Archiver, un outil zip Java côté client. J'explique comment utiliser Archiver et comment il utilise le package java.util.zip. Bien qu'ayant écrit Archiver comme une application côté client, son traitement des fichiers zip est tout aussi bon avec Java côté serveur.

Utilisation de fichiers Zip avec Java

Archiver est un outil zip côté client qui fonctionne avec des fichiers zip standards,
des fichiers jar Java, et des fichiers ear et war EJB.
Archiver utilise l’interface d’Explorer, familière aux applications PC (figure
1). La fenêtre de l’application est divisée verticalement en deux volets. Le volet
de gauche montre la structure du fichier zip ; celui de droite présente le contenu
ou les propriétés du fichier actuellement sélectionné. On peut tout effectuer
depuis ce système de menus. Il est possible également d’effectuer des actions
courantes depuis la barre d’outils ou un menu contextuel affiché par un clic-droit.
Le système de menus comprend toutes les actions de base caractéristiques d’un
outil zip.

Le menu File : les options New, Open, Reopen, Properties, Close
et Exit fonctionnent avec des fichiers zip.

Le menu Actions : les options Delete, Extract, Insert, Find,
Select all et Invert Selection fonctionnent avec des entrées de fichier zip.

Le menu Options : les options contrôlent la police (Font) et
les arrêts de tabulation (Tab) du volet de contenu et la personnalité (Look and
Feel) de l’application.

Si la plupart des options de menu parlent d’elles mêmes, deux d’entre elles, Insert
et Extract, méritent un complément d’explication. La boîte de dialogue Insert
(figure 2) contrôle l’option Insert. On peut choisir un ou plusieurs fichiers
dans la liste pour les insérer dans le fichier zip. L’option Current path contrôle
la partie parent du chemin qui est extraite du chemin relatif, qui est stockée
dans le fichier zip. Figure 2, C:\Classes seront extraites de C:\Classes\survey
et stockées comme survey. L’option Compress data détermine si les fichiers sont
stockés en format comprimé ou non. L’option Include subdirectories détermine si
les fichiers dans les sous-répertoires du répertoire sélectionné doivent être
insérés dans le fichier zip.

La boîte de dialogue Extract (figure 3) contrôle l’option Extract. On choisit
dans la liste le répertoire qui contiendra les fichiers extraits. L’option Replace
existing files détermine si les fichiers existants sont automatiquement remplacés
par écrasement. L’option Use directory names détermine si le chemin du fichier
extrait est ajouté à  celui du répertoire sélectionné.

Dans les deux boîtes de dialogue Insert et Extract, le bouton supérieur droit
fait alterner la liste entre (1) afficher les répertoires suivis des fichiers
et (2) afficher les fichiers et répertoires en ordre alphabétique. Dans un monde
idéal, ce bouton serait inutile. Mais les I/O Java sont parfois lentes et l’ordre
alphabétique renvoie le contenu d’un répertoire bien plus rapidement que l’ordre
standard. Ce basculement s’avèrera utile pour afficher de grands répertoires ou
des serveurs associés à  des unités de réseaux.

Les applications Java ont parfois des problèmes de performances. D’où la question
naturelle de savoir quelles sont les performances d’Archiver par rapport aux outils
zip PC du commerce ? Commençons par la mauvaise nouvelle : chez moi, j’utilise
un PC avec un processeur P200 et 64 Mo de RAM, et le chargement d’Archiver prend
environ 20 secondes (contre une seconde pour un produit zip du commerce). Mais
sur un PC équipé d’un processeur P300 et de 128 Mo de RAM, Archiver se charge
en moins de 10 secondes. Avec des applications Java, il est bon d’avoir beaucoup
de mémoire.

Une fois qu’Archiver est chargé, les performances sont normalement 50
% meilleures que celles d’un produit du commerce

Et voici la bonne nouvelle : une fois qu’Archiver est chargé, les performances
sont normalement 50 % meilleures que celles d’un produit du commerce. Le plus
souvent, on ne remarque que le temps de chargement initial. Les délais de traitement
ne sont apparents qu’avec de très grands fichiers zip.

La colle qui fait tout tenir ensemble

J’ai écrit plusieurs packages de support, que j’appelle « colle », parce qu’ils
me permettent de relier des fonctions courantes à  mes applications :

· jmonypenny.glue.io : classes d’entrée/sortie de fichiers.
· jmonypenny.glue.ui : classes d’interface utilisateur incluant des boîtes
de dialogue de sélection pour les fichiers et les polices, et des  » wrappers
 » pour des composants Swing.
· jmonypenny.glue.ui.db : classes d’interface utilisateur de base de données
pour afficher des données.
· jmonypenny.glue.ui.graph : classes d’interface utilisateur graphique (GUI).
· jmonypenny.glue.util : classes utilitaires pour une correspondance de
profils simples et des tableaux de chaînes.

La convention de nommage utilisée pour les packages peut sembler superfétatoire
ou quelque peu égocentrique. Pourtant, avant d’adopter le standard courant,
j’ai constaté des conflits entre le contenu de mes packages de support et
les nouvelles fonctions présentes dans le SDK Java. Une convention de nommage
rigide, qui démarre par le nom de la société ou l’adresse Internet évite
les collisions, réduisant du même coup la maintenance des programmes.

Tous les packages de la liste précédente se trouvent dans l’archive jmonypenny.jar,
qui contient l’application Archiver. Les classes dans les packages de collage
sont documentées à  l’aide des tags javadoc standard et l’application Archiver
contient de nombreux exemples d’utilisation de ces packages.

Téléchargez gratuitement cette ressource

Comment cerner la maturité digitale de votre entreprise ?

Comment cerner la maturité digitale de votre entreprise ?

Conçu pour les directions IT et Métiers, ce guide vous permettra d'évaluer précisément vos processus de communication client, d'identifier vos lacunes et points d'inflexion pour établir un plan d’actions capable de soutenir durablement votre évolution. Bénéficiez maintenant d'une feuille de route complète.

Tech - Par iTPro.fr - Publié le 24 juin 2010