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

Collection et Stream Java Discussion :

[java.util.zip] Les Zip dépassant un certain poids présentent une erreur


Sujet :

Collection et Stream Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [java.util.zip] Les Zip dépassant un certain poids présentent une erreur
    Bonjour, je suis débutant en java et je dois réaliser un programme de sauvegarde.
    J'ai donc réalisé un programme qui choisis les fichiers a sauvegarder puis les ajoute dans un zip.

    J'ai rencontré quelques problèmes avec ce zip mais j'ai finalement réussi à l'avoir correct.
    Lors de test sur des répertoires (sous windows) de plus de 3Go, je n'ai pas forcément d'erreur mais lorsque je tente de réparer l'archive avec winrar, j'obtiens l'erreur suivante après quelques milliers de fichiers :

    Erreur de lecture dans le fichier zip
    Tentative de déplacement du pointeur de fichier avant le début du fichier.

    Je n'ai pas réussi a trouver des liens entre cette erreur et mon code de compression. Avez vous déjà eu un problème de ce type?

    Voici le code qui créé et ajoute des fichiers au zip
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
    /**
     * @author : Anthony
     * 
     * _zos est le fichier Zip de la sauvegarde du jour
     ****************************/
     public class  CompressionInc
     { 
     private   ZipOutputStream       _zos;
     
     
     /**
     * creation du fichier de sortie _zos avec le nommage
     * le fichier est stocke dans sauvegarde/zip/incrementale/szDirName
     * 
     *************************************************/
     public  CompressionInc (String  szDir, long  now)
     throws  IOException
     {
     String  szDirName = szDir.replaceAll     (":\\\\", "_");
             szDirName = szDirName.replaceAll ( "\\\\", "_");
             szDirName = szDirName.replaceAll ( "/"   , "_");
     System.out.println (szDirName);
     
     Date  date = new Date ();
     date.setTime (now + 1000);
     System.out.println (date);
     
     SimpleDateFormat  dateFormat    = new SimpleDateFormat ("yyyy-MM-dd_HH.mm.ss");
     
     String            szDate        = dateFormat.format (date);
     String            szZipFileName = szDirName + szDate + ".zip";
     File              zipFile       = new File ("zip/incrementale/" + szDate + "/" + szZipFileName);
     
     zipFile.getParentFile ().mkdirs ();
     
     FileOutputStream  fos = new FileOutputStream (zipFile);
     
     _zos     = new ZipOutputStream (fos);
     
     _zos.setLevel (Deflater.DEFAULT_COMPRESSION);
     } 
     
     
     /**
     * ajoute un fichier a l'archive
     * iSize est le nombre de bytes lu pendant la compression 
     *****************************************************/
     public void  addFile (String  szPath, int  iDirLength)
     throws  FileNotFoundException,  IOException,  ZipException
     {
     int        iSize  = 0; 
     final int  BUFFER = 1024;
     byte []    buffer = new byte [BUFFER];
     try
        {
        String  szPathFile = szPath.substring (iDirLength);
     
        File  fileToCompress = new File (szPath);
     
        if (fileToCompress.isDirectory () == true)
            {
            ZipEntry  zipEntry = new ZipEntry (szPathFile + "/");
     
            _zos.putNextEntry (zipEntry);
     
            System.out.println ("COPIE DU REPERTOIRE " + szPathFile + "/");
            }
        else
            {
            File                 file      = new File (szPath);
            FileInputStream      fileInput = new FileInputStream (file);
            BufferedInputStream  buffIn    = new BufferedInputStream (fileInput);
            ZipEntry             zipEntry  = new ZipEntry (szPathFile);
     
            _zos.putNextEntry (zipEntry);
     
            while ((iSize = buffIn.read (buffer, 0, BUFFER)) != -1)
                {
                _zos.write (buffer, 0, iSize);
                }
            _zos.flush ();
            _zos.closeEntry ();
     
            buffIn.close ();
     
            System.out.println ("COPIE DE " + szPathFile);
            }
        }
     
     finally
        {
        }
     }
     
     /**
     * Fermer le zip
     ************************/
     public void  closeZip ()
     throws  IOException
     {
     _zos.finish ();
     _zos.close ();
     }
     
     }
    de plus lorsque j'utilise la commande unzip pour un gros zip sous linux, je recois ce message :

    warning zip.zip : 0 extra bytes at beginning or within zipfile
    file #1 : bad zipfile offset (local header sig : 0)
    merci de toute l'aide que vous pourrez apporter!

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    essaye avec bzip2
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/12/2011, 21h21
  2. Connaître les valeurs dépassant un certain seuil en visual basic 6.0
    Par moirs555 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 04/10/2011, 14h08
  3. Réponses: 13
    Dernier message: 03/07/2009, 15h08
  4. Importer java.utils.zip ?
    Par Chii-san dans le forum Java ME
    Réponses: 3
    Dernier message: 15/03/2007, 15h01
  5. [C#] #ziplib ou J# (java.util.zip) pour ZIPper?
    Par SErhio dans le forum Windows Forms
    Réponses: 10
    Dernier message: 11/02/2005, 15h46

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