Erro ímpar em Sharpziplib - O tamanho era x, mas eu esperava y
-
06-07-2019 - |
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?
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;
}