Платформа сжатия iOS / MacOS была бы самой быстрой и не вызывала бы дополнительных проблем
re: https://developer.apple.com/documentation/compression?language=objc
Хотя она не поддерживает создание файла с внутренним форматированием на основе Zip, он поддерживает несколько алгоритмов сжатия.
Apple рекомендует использовать COMPRESSION_ZLIB
:
Алгоритм сжатия zlib, рекомендуемый для кросс-платформенного сжатия.
Существует множество (de) инструменты сжатия, которые могут распаковывать файлы на основе сырого zlib, но для упрощения можно включить заголовок, чтобы gzip
(Windows, macOS и Linux) мог обрабатывать их без дальнейших изменений.(Вы также можете добавить нижний колонтитул на основе CRC в файл, но он действительно не требуется, если вы уже не сравниваете CRC для мобильных устройств и серверов ваших zip-файлов ...)
Raw zlib w / header Пример:
using (var fileOriginal = new FileStream(inputFile, FileMode.Open))
using (var fileCompressed = new FileStream(outputZip, FileMode.Create))
using (var compressionStream = new Compression.CompressionStream(fileCompressed, System.IO.Compression.CompressionMode.Compress, CompressionAlgorithm.Zlib, true))
{
var header = new byte[] { 31, 139, 8, 0, 0, 0, 0, 0, 0, 0 }; // \x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x00
fileCompressed.Write(header, 0, header.Length);
fileOriginal.CopyTo(compressionStream);
}