C #: программно создать разделенный почтовый файл - PullRequest
0 голосов
/ 23 мая 2018

Я хочу создать zip-файл из папки размером около 1,5 ГБ и разделить этот zip-файл на куски размером 100 МБ.Я нашел немало потоков по этому вопросу, но у меня ничего не получилось.

Сначала я попробовал System.IO.Compression, но обнаружил, что он не поддерживает разбиение zip-файлов (пожалуйста, исправьтеменя, если я ошибаюсь!).

Затем я попробовал Ionic.zip, который выглядел очень просто, но каждый набор файлов, который я создаю, каким-то образом поврежден (например, следующий код, который использует шрифтыдиректория в качестве тестовой директории создает набор файлов, которые я не могу открыть или распаковать как архив с помощью winzip или winrar):

using (var zipFile = new Ionic.Zip.ZipFile(Encoding.UTF8))
{
    zipFile.AddDirectory("c:\\windows\\fonts", directoryPathInArchive: string.Empty);
    zipFile.MaxOutputSegmentSize = 100 * 1000000;
    zipFile.Save("c:\\users\\me\\test.zip");
}

Наконец, я попробовал 7z.dll и SharpCompress,Используя командную строку и файл 7z.exe, следующее прекрасно работает:

7z.exe a "c:\users\me\test.zip" "c:\Windows\Fonts" -v100m

Но следующий код выдает ошибку «Значение не попадает в ожидаемый диапазон».

SevenZipCompressor.SetLibraryPath("c:\\program files\\7-zip\\7z.dll");
var compressor = new SevenZipCompressor();
compressor.CompressionMethod = CompressionMethod.Lzma2;
compressor.CustomParameters.Add("v", "100m");
compressor.CompressDirectory("c:\\windows\\fonts\\", "c:\\users\\me\\test.zip");

Я также попробовал следующее (пытаясь выяснить, как переключатели командной строки работают в SharpCompress), которое создает файл zip, но не разбивает его на части:

SevenZipCompressor.SetLibraryPath("c:\\program files\\7-zip\\7z.dll");
var compressor = new SevenZipCompressor();
compressor.CompressionMethod = CompressionMethod.Lzma2;
compressor.CustomParameters.Add("mt", "on");
compressor.CustomParameters.Add("0", "LZMA2:c=100m");
compressor.CompressDirectory("c:\\windows\\fonts\\", "c:\\users\\me\\test.zip");

Кто-нибудьзнаете, почему ни один из перечисленных методов не работает?Или есть другие способы, с помощью которых люди работают, которых я еще не пробовал?

Спасибо!

1 Ответ

0 голосов
/ 24 мая 2018

Мне неизвестна библиотека, которая поддерживает формат PKZIP с разделением zip-файлов.

...