c# - Set ZipArchiveEntry.CompressionLevel to CompressionLevel.NoCompression not work in xamarin android -
i want create zip archive store files , set ziparchiveentry.compressionlevel
compressionlevel.nocompression
, when run android apk in release mode, ziparchiveentries compressed , have ratio >0%.
use xamarin android 4.1.1.3 , test apk in lenovo tab 4 a7-30gc , asus z00vd.
sample code:
public void addtoarchive(string entryname, string path, datetime timestamp) { ziparchiveentry zipentry = this.archive.createentry(entryname, compressionlevel.nocompression); zipentry.lastwritetime = timestamp; using (stream entrystream = zipentry.open()) { using (stream filestream = file.open(path, filemode.open, fileaccess.read, fileshare.read)) { filestream.copyto(entrystream); filestream.close(); } entrystream.close(); } }
thanks.
based upon microsoft .net reference source (via mono source), setting compressionlevel
provides "hint" underlaying compression code.
you see files when compressed @ "zero" compression level end seeing compression due file optimizations done regardless of compression level requested. found across mono, xamarin.android, xamarin.ios, .net, etc...
this abstract concept , not zlib compression level. there may or may not correspondance possible implementation-specific level-parameter of deflater.
///------------------------------------------------------------------------------ /// <copyright file="compressionlevel.cs" company="microsoft"> /// copyright (c) microsoft corporation. rights reserved. /// </copyright> /// /// <owner>gpaperin</owner> ///------------------------------------------------------------------------------ // abstract concept , not zlib compression level. // there may or may not correspondance possible implementation-specific level-parameter of deflater. public enum compressionlevel { optimal = 0, fastest = 1, nocompression = 2 }
Comments
Post a Comment