2016-08-01 4 views
2

Ich möchte ein Zip-Archiv für Speicherdateien und setzen ZipArchiveEntry.CompressionLevel zu CompressionLevel.NoCompression, zu schaffen, aber wenn ich mein Android apk im Release-Modus ausführen, werden alle ZipArchiveEntries komprimiert und Verhältnis > 0%.
Ich benutze Xamarin für Android 4.1.1.3 und testen Sie die apk in Lenovo Registerkarte 4 A7-30GC und Asus Z00VD.
Beispielcode:Set ZipArchiveEntry.CompressionLevel arbeiten CompressionLevel.NoCompression nicht Xamarin android

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(); 
     } 
    } 

Danke.

Antwort

0

Die Einstellung CompressionLevel liefert basierend auf der Referenzquelle Microsoft .Net (über die Mono-Quelle) nur einen "Hinweis" auf den zugrunde liegenden Komprimierungscode.

Sie werden sehen, dass einige Dateien, wenn sie mit der Komprimierungsstufe "Null" komprimiert werden, aufgrund von Dateioptimierungen, die unabhängig von der angeforderten Komprimierungsstufe ausgeführt werden, eine gewisse Komprimierung feststellen. Dies wird über Mono, Xamarin.Android, Xamarin.iOS, .Net, usw. zu finden sein.

Dies ist ein abstraktes Konzept und nicht die Komprimierung ZLib. Es kann oder darf keine Übereinstimmung mit einem möglichen implementierungsspezifischen Level-Parameter des Deflater geben.

///------------------------------------------------------------------------------ 
/// <copyright file="CompressionLevel.cs" company="Microsoft"> 
///  Copyright (c) Microsoft Corporation. All rights reserved. 
/// </copyright>        
/// 
/// <owner>gpaperin</owner> 
///------------------------------------------------------------------------------ 
// This is an abstract concept and NOT the ZLib compression level. 
// There may or may not be any correspondance with the a possible implementation-specific level-parameter of the deflater. 
public enum CompressionLevel { 
    Optimal = 0, 
    Fastest = 1, 
    NoCompression = 2 
}