Domanda

Ricevo un errore quando uso SharpZipLib. Ho un codice simile a

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

Che sembra essere corretto. Tuttavia, ricevo una ZipException che afferma che

size was 0, but I expected 54

Non ho idea di cosa significhi. Qualcuno ha qualche idea o un collegamento a un documento API di qualche tipo?

È stato utile?

Soluzione

Si scopre che il problema era il seguente. Stavo cercando di creare un file .zip di tutti gli elementi in una determinata directory e posizionare quel file .zip nella directory. Apparentemente il modo in cui questa libreria funziona, viene creato il file .zip e quindi la directory viene letta in file per file, scrivendo nel file .zip. L'errore si è verificato durante il tentativo di aggiungere il file .zip stesso allo zip! Probabilmente è stato negato l'accesso al file o qualcosa del genere, con conseguente errore sopra. La soluzione semplice era quella di creare il file .ZIP in una directory diversa.

Altri suggerimenti

Qui sono link al loro codice sorgente e un file di aiuto con API documentazione.

Avevo risolto un problema simile gestendolo all'interno del gestore eventi ProgressHandler e passavo ZIPEntry come mittente. Poiché questa è una condizione di errore, dovremmo interrompere l'ulteriore elaborazione del file zip e.ContinueRunning dovrebbe essere impostato come falso

private void ProcessFileHandler(object sender, ProgressEventArgs e)
        {                    
                ZipEntry newEntry = sender as ZipEntry;
                if (newEntry != null)
                {
                    newEntry.Size = e.Processed;
                }
                e.ContinueRunning = keepRunning;
                return;
         }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top