0

我在 .net 4.5 中使用 System.IO.Compression,ZipArchive 和 ZipFile 用于将 txt 文件添加到存档中。大约有 75 个文件。将文件放入文件夹并测量大小时,大约为 15 KB

但是当用于使用 ZipArchive 放入存档时,生成的 zip 文件大小为 21KB。我做错了什么还是这个 ZipArhive 只是将文件放入存档单个文件而不是压缩?

是用于 .zip 创建的 Deflate 算法吗?这就是我所做的。是否可以使用任何高级压缩?对于 .7zip,文件大小更小,仅 1KB 左右

 using (ZipArchive zippedFile = ZipFile.Open(zipFileName, ZipArchiveMode.Create))
                {
                    foreach (string file in filesTobeZipped)
                    {
                        zippedFile.CreateEntryFromFile(file, Path.GetFileName(file), CompressionLevel.Optimal);
                    }
                }
4

1 回答 1

1

zip 文件中的每个条目都有 76 字节的本地和中央标头的开销,加上带路径的文件名长度的两倍,再加上 22 字节的单个结束记录。例如,对于 75 个文件,每个文件都具有三个字符的名称,总开销约为 6K。每个未压缩文件的平均长度约为 200 字节,太短而无法有效压缩。如果每个文件在 zip 文件中保留一个 200 字节的条目,那么您最终会得到一个 21K 的 zip 文件。这实际上是你得到的。

于 2017-01-20T05:55:22.190 回答