Я создаю сплит-архивы, используя следующий код:
string filename = "FileName.pdf";
using (ZipFile zip = new ZipFile())
{
zip.UseZip64WhenSaving = Zip64Option.Default;
zip.CompressionLevel = Ionic.Zlib.CompressionLevel.Default;
using (FileStream stream = new FileStream(temp, FileMode.Open))
{
zip.AddEntry(filename, stream);
zip.MaxOutputSegmentSize = settings.AttachmentSize * (1024 * 1024);
zip.Save(zipFileName);
}
}
В приведенном выше коде генерируется 3 файла: file.zip, file.z01 and file.z02
.
Когда я щелкнул правой кнопкой мыши этот zip файл и выберите Extract All
(не используя WinRAR или другое программное обеспечение для zip-копирования, которое можно извлечь, просто встроенный zip файл Windows), он вызывает следующую ошибку:
Тот же том не может использоваться как источник и пункт назначения
Что странно в том, что это происходит только в первый раз, когда я пытаюсь извлечь файлы, последующие экстракции в порядке, так что должно быть, как файлы были заархивированы в первую очередь.
ОБНОВЛЕНИЕ 1
То же самое происходит, даже если я извлекаю в другую папку
В отношении этой проблемы обсуждались проблемы на сайте DotNetZip Codeplex, но, похоже, проблема еще не решена.
http://dotnetzip.codeplex.com/discussions/239172
http://dotnetzip.codeplex.com/discussions/371005
ОБНОВЛЕНИЕ 2
Глядя на документ для свойства MaxOutputSegmentSize, он цитируется:
Я не считаю, что Windows Explorer может извлечь разделенный архив.
Больше никаких объяснений, почему. Я считаю это ложноположительным, поскольку, как упоминалось выше,
это происходит только в первый раз, когда я пытаюсь извлечь файлы, последующие экстракции ОК
Я использую 64-разрядную версию Windows 8.1.