创建zip文件xamarin表单ios



我们在Xamarin表单android中有ZipFile类来压缩文件,有没有办法在Xamarin表单iOS项目中使用相同的方法。我不想使用像"ICSharpCode.SharpZip.Lip"这样的第三方库,它有时需要10分钟来压缩文件,并会导致一些其他问题。

我还尝试了GZipStream,但没有得到想要的结果。使用此扩展下载后很难提取。

谢谢。

iOS/AcOS压缩框架将是最快的,不会导致的额外膨胀

回复:https://developer.apple.com/documentation/compression?language=objc

虽然它不支持创建基于"Zip"的内部格式化文件,但它支持多种压缩算法。

苹果建议使用COMPRESSION_ZLIB:

zlib压缩算法,推荐用于跨平台压缩。

上有许多(去(压缩工具可以解压缩基于zlib原始文件,但为了"更容易",您可以包含一个标头,以便gzip(Windows、macOS和Linux(可以在不做进一步更改的情况下处理它们。(您也可以在文件中添加一个基于CRC的页脚,但这并不是真正需要的,除非您已经在比较zip文件的移动和服务器CRC…(

带标头的原始zlib示例:

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 }; // x1fx8bx08x00x00x00x00x00x00x00
fileCompressed.Write(header, 0, header.Length);
fileOriginal.CopyTo(compressionStream);
}

您可以从系统中使用ZipFile.CreateFromDirectory。IO.Compression在您的共享项目中压缩文件。示例用法将类似于ZipFile.CreateFromDirectory(folderPath, Path.Combine(storagePath, zipFileName));

最新更新