我想为存储文件创建一个zip存档,并将ZipArchiveEntry.CompressionLevel设置为CompressionLevel.NoCompression
但是当我在发布模式下运行android apk时,所有ZipArchiveEntries都被压缩,并且比率> 0%。
我将xamarin用于android 4.1.1.3并在lenovo选项卡4 A7-30GC和asus Z00VD中测试apk.sample代码:

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


谢谢。

最佳答案

基于Microsoft .Net参考源(通过Mono源),设置CompressionLevel仅为底层压缩代码提供“提示”。

您会看到,由于以文件优化完成了某些压缩,因此无论以何种压缩级别进行压缩,某些文件在以“零”压缩级别进行压缩时最终都会看到某种压缩。可以在Mono,Xamarin.Android,Xamarin.iOS,.Net等网站中找到。


  这是一个抽象概念,而不是ZLib压缩级别。
  与放气机的可能的实施特定的液位参数可能有对应关系,也可能没有对应关系。


///------------------------------------------------------------------------------
/// <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
}

10-03 00:41