我想为存储文件创建一个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
}