criar zip Xamarin arquivo de forma ios

votos
0

Temos classe ZipFile em Xamarin forma android para fechar um arquivo, há uma maneira de usar o mesmo em Xamarin forma projecto iOS. Eu não quero usar bibliotecas de terceiros como ICSharpCode.SharpZipLib.Zip que às vezes leva 10 minutos para compactar um arquivo e faz com que alguns outros problemas.

Eu também tentei GZipStream, que não dá os resultados desejados. É difícil extrair após o download com esta extensão.

Obrigado.

Publicado 27/11/2018 em 18:08
fonte usuário
Em outras línguas...                            


2 respostas

votos
1

A compressão Framework iOS / MacOS seria o mais rápido e não causam inchaço adicional

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

Enquanto ele não suporta a criação de um "Zip" baseados em arquivo formatado internamente, ele suporta vários algoritmos de compressão.

A Apple recomenda o uso de COMPRESSION_ZLIB:

O algoritmo de compressão zlib, recomendado para compressão de multi-plataforma.

Há uma infinidade de (de) ferramentas de compressão em que pode descompactar arquivos com base matérias-zlib, mas para torná-lo "mais fácil", você pode incluir um cabeçalho de modo gzip(Windows, MacOS e Linux) pode lidar com eles sem mais alterações. (Você também pode adicionar um rodapé baseado em CRC para o arquivo, mas não é realmente necessário, a menos que você está comparando os CRCs móveis e de servidor de seus arquivos zip já ...)

zlib bruto w Exemplo / cabeçalho:

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);
}
Respondeu 27/11/2018 em 22:09
fonte usuário

votos
0

Você pode usar ZipFile.CreateFromDirectorya partir System.IO.Compression em seu projeto compartilhado para compactar o arquivo. Exemplo de uso será comoZipFile.CreateFromDirectory(folderPath, Path.Combine(storagePath, zipFileName));

Respondeu 27/11/2018 em 19:21
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more