Question

Je reçois une erreur lorsque j'utilise SharpZipLib. J'ai un code qui ressemble à

FastZip compressor = new FastZip();
compressor.CreateZip(outputFileName, currentWorkingDirectory, true, "");

Ce qui semble être correct. Cependant, je reçois une exception ZipException affirmant que

size was 0, but I expected 54

Je n'ai aucune idée de ce que cela signifie. Quelqu'un a une idée ou un lien vers un document API?

Était-ce utile?

La solution

Il s’avère que le problème est le suivant. J'essayais de créer un fichier .zip contenant tous les éléments d'un répertoire donné et de placer ce fichier .zip dans le répertoire. Apparemment, de la manière dont cette bibliothèque fonctionne, le fichier .zip est créé, puis le répertoire est lu fichier par fichier et écrit dans le fichier .zip. L'erreur s'est produite quand il a essayé d'ajouter le fichier .zip lui-même au zip! L'accès au fichier ou à quelque chose à ce moment a probablement été refusé, ce qui a entraîné l'erreur ci-dessus. La solution simple consistait à créer le fichier .ZIP dans un autre répertoire.

Autres conseils

Voici des liens vers leur code source et un fichier d'aide avec l'API documentation.

J'avais résolu un problème similaire en le traitant dans le gestionnaire d'événements ProgressHandler et en transmettant le ZIPEntry en tant qu'expéditeur. Comme il s’agit d’une condition d’erreur, nous devons arrêter tout traitement ultérieur du fichier zip. E.ContinueRunning doit être défini sur false

private void ProcessFileHandler(object sender, ProgressEventArgs e)
        {                    
                ZipEntry newEntry = sender as ZipEntry;
                if (newEntry != null)
                {
                    newEntry.Size = e.Processed;
                }
                e.ContinueRunning = keepRunning;
                return;
         }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top