Странная ошибка в SharpZipLib & # 8212; Размер был х, но я ожидал у
-
06-07-2019 - |
Вопрос
Я получаю сообщение об ошибке при использовании SharpZipLib. У меня есть код, который выглядит как
FastZip compressor = new FastZip();
compressor.CreateZip(outputFileName, currentWorkingDirectory, true, "");
Что кажется правильным. Однако я получаю исключение ZipException, утверждающее, что
size was 0, but I expected 54
Понятия не имею, что это значит. У кого-нибудь есть понимание или какая-то ссылка на документ API?
Решение
Оказывается, проблема заключалась в следующем. Я пытался создать файл .zip из всех элементов в данном каталоге и поместить этот файл .zip в каталог. Очевидно, как работает эта библиотека, создается файл .zip, а затем каталог читается в файл за файлом, записываясь в файл .zip. Произошла ошибка при попытке добавить сам файл .zip в zip! Вероятно, в тот момент было отказано в доступе к файлу или чему-то другому, что привело к ошибке выше. Простым решением было создать файл .ZIP в другом каталоге.
Другие советы
Здесь приведены ссылки на их исходный код и файл справки с API документация.
Я исправил подобную проблему, обработав ее внутри обработчика событий ProgressHandler и передав ZIPEntry в качестве отправителя. Так как это условие ошибки, мы должны прекратить дальнейшую обработку zip-файла. E.ContinueRunning должен быть установлен как false
private void ProcessFileHandler(object sender, ProgressEventArgs e)
{
ZipEntry newEntry = sender as ZipEntry;
if (newEntry != null)
{
newEntry.Size = e.Processed;
}
e.ContinueRunning = keepRunning;
return;
}