Pergunta

Estou recebendo um erro quando uso o Sharpziplib. Eu tenho código que parece

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

O que parece estar correto. No entanto, recebo uma Zipexception alegando que

size was 0, but I expected 54

Eu não tenho idéia o que isso significa. Alguém tem alguma visão ou um link para um documento da API de algum tipo?

Foi útil?

Solução

Acontece que a questão foi a seguinte. Eu estava tentando criar um arquivo .zip de todos os itens em um determinado diretório e colocar esse arquivo .zip no diretório. Aparentemente, a maneira como essa biblioteca funciona, o arquivo .zip é criado e, em seguida, o diretório é lido no arquivo de arquivo, gravando no arquivo .zip. O erro ocorreu quando tentou adicionar o próprio arquivo .zip ao zip! Provavelmente, foi negado o acesso ao arquivo ou algo nesse ponto, resultando no erro acima. A correção simples era criar o arquivo .zip em um diretório diferente.

Outras dicas

Aqui são links para seu código -fonte e um arquivo de ajuda com documentação da API.

Eu havia corrigido um problema semelhante lidando com ele dentro do manipulador de eventos ProgressHandler e passou o zipentry como remetente. Como essa é a condição de erro, devemos parar de processamento adicional do arquivo zip e.continuerunning deve ser definido como falso

private void ProcessFileHandler(object sender, ProgressEventArgs e)
        {                    
                ZipEntry newEntry = sender as ZipEntry;
                if (newEntry != null)
                {
                    newEntry.Size = e.Processed;
                }
                e.ContinueRunning = keepRunning;
                return;
         }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top