IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Tester un zip sans l'ouvrir


Sujet :

Entrée/Sortie Java

  1. #1
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut Tester un zip sans l'ouvrir
    Bonjour,

    je fais du traitement sur des fichiers zips en java.

    Pour vérfier que les fichiers que je recois au format zip contiennent les éléments que j'attends, je dezippe en mémoire le début du fichier.
    En effet, j'ai besoin de récupérer des infos sur les 1eres lignes.

    Je cherche également à tester la validité de la compression du zip. (en gros un checksum ).
    Or mes fichiers sont volumineux et je fais des traitements en masse, avec un filer limité et une JVM fortement sollicitée. J'aurais donc voulu savoir s'il y a un moyen de tester la validité d'un zip sans avoir à l'ouvrir et à le lire entierement

    Merci.

  2. #2
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Je pense que tu peux jetter un coup d'oeil ici

  3. #3
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Citation Envoyé par sozie9372
    Je pense que tu peux jetter un coup d'oeil ici
    Bon je dois vraiment être nul .....lol

    Ok, je peux vérifier que mon archive contient un seul fichier ... ça j'y arrivais

    Après comment savoir si mon zip est incorrect ???

    Mon problème en fait est que j'ai beaucoup de traitement qui tournent ...
    celui la est le premier : il recoit les fichiers ...
    et loin derriere lui je le décompresse .... donc je voudrais ne pas transmettre un fichier qu'il pourra pas décompresser mais en gros je dois pas décompresser le fichier avant ....


    Là, j'arrive à récupérer le checksum ... mais à quoi je le compare ???? J'ai du rater une étape je crois ....

  4. #4
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Ayè je suis perdu , j'ai plus rien compris. Qu'entends-tu par tester la validité du zip ? Voir si il y a au moins un fichier dedans ? Le taux de compression ?
    Si tu veux lire le contenu sans extraire, tu peux regarder

  5. #5
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Citation Envoyé par sozie9372
    Ayè je suis perdu , j'ai plus rien compris. Qu'entends-tu par tester la validité du zip ? Voir si il y a au moins un fichier dedans ? Le taux de compression ?
    Si tu veux lire le contenu sans extraire, tu peux regarder

    ok je reprends ... je devais pas être clair ....

    en gros, je veux savoir si le fichier que j'ai est un fichier corrompu ou pas ...
    et sans avoir à tenter de le décompresser ....


    Oui je sais c'est complexe mais bon .....

  6. #6
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    La fonction présente dans le lien que je t'ai fourni ne dézippe pas le l'archive, et pour chaque fichier présent dans l'archive, elle lit la première ligne... Je pense que c'est un moyen correct de tester... Du moins j'en vois pas d'autre...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    public void readZipFiles(String filename) {
    		try {
    			byte[] buf = new byte[1024];
    			ZipInputStream zipinputstream = null;
    			ZipEntry zipentry;
    			zipinputstream = new ZipInputStream(new FileInputStream(filename));
     
    			zipentry = zipinputstream.getNextEntry();
    			while (zipentry != null) {
    				// for each entry to be extracted
    				String entryName = zipentry.getName();
    				System.out.println("File ::" + entryName);
    				RandomAccessFile rf;
    				File newFile = new File(entryName);
    				String directory = newFile.getParent();
     
    				if (directory == null) {
    					if (newFile.isDirectory())
    						break;
    				}
     
    				rf = new RandomAccessFile(entryName, "r");
    				String line;
     
    				if ((line = rf.readLine()) != null) {
    					System.out.println(line);
    				}
     
    				rf.close();
    				zipinputstream.closeEntry();
    				zipentry = zipinputstream.getNextEntry();
     
    			}// while
     
    			zipinputstream.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}

  7. #7
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Citation Envoyé par sozie9372
    La fonction présente dans le lien que je t'ai fourni ne dézippe pas le l'archive, et pour chaque fichier présent dans l'archive, elle lit la première ligne... Je pense que c'est un moyen correct de tester... Du moins j'en vois pas d'autre...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    public void readZipFiles(String filename) {
    		try {
    			byte[] buf = new byte[1024];
    			ZipInputStream zipinputstream = null;
    			ZipEntry zipentry;
    			zipinputstream = new ZipInputStream(new FileInputStream(filename));
     
    			zipentry = zipinputstream.getNextEntry();
    			while (zipentry != null) {
    				// for each entry to be extracted
    				String entryName = zipentry.getName();
    				System.out.println("File ::" + entryName);
    				RandomAccessFile rf;
    				File newFile = new File(entryName);
    				String directory = newFile.getParent();
     
    				if (directory == null) {
    					if (newFile.isDirectory())
    						break;
    				}
     
    				rf = new RandomAccessFile(entryName, "r");
    				String line;
     
    				if ((line = rf.readLine()) != null) {
    					System.out.println(line);
    				}
     
    				rf.close();
    				zipinputstream.closeEntry();
    				zipentry = zipinputstream.getNextEntry();
     
    			}// while
     
    			zipinputstream.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    Oui je lis déja la premiere ligne .....
    en fait meme mieux que ca ...
    je dezippe en mémoire le debut du fichier donc je peux dire s'il est valide ...

    Enfin ... je peux dire que le début est valide .... en revanche je peux rien pour la fin ...... donc ca m'embete un peu ...

  8. #8
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Ben tu rajoutes une fonction de test aléatoire qui va lire en plein milieu et à la fin du fichier. Ou sinon tu t'amuses à tout lire...

Discussions similaires

  1. tester si un fichier txt est vide sans l'ouvrir
    Par azamharir dans le forum MFC
    Réponses: 4
    Dernier message: 25/01/2009, 00h41
  2. Comment faire pour tester un checkbox d'un classeur fermé sans l'ouvrir?
    Par elbourin dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/08/2008, 12h59
  3. ZIP : Lire un fichier zip sans l'ouvrir
    Par pracede2005 dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 29/05/2008, 09h19
  4. Exporter un état sans l'ouvrir
    Par stigma dans le forum IHM
    Réponses: 8
    Dernier message: 16/02/2006, 17h16
  5. Référence à un champ ds une table sans l'ouvrir
    Par electrosat03 dans le forum Access
    Réponses: 4
    Dernier message: 12/02/2006, 22h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo