C# DotNetZip被文件阻塞

C# DotNetZip被文件阻塞,c#,zip,compression,dotnetzip,C#,Zip,Compression,Dotnetzip,有人能解释一下为什么DotNetZip会在文件上旋转轮子吗?我有这个文件,这是版权和不可分发的,这将不会压缩。我可以使用该文件的早期版本,或者更高版本,它会很好地压缩 zip实用程序不应该关心版本,因此我假设它认为文件不知何故已损坏。如何调试此问题?当我单步执行代码时,问题不会发生,但如果我让它运行,它会在保存此特定文件时暂停。以下是库中的代码: ICollection<ZipEntry> c = (SortEntriesBeforeSaving) ? EntriesSorted :

有人能解释一下为什么DotNetZip会在文件上旋转轮子吗?我有这个文件,这是版权和不可分发的,这将不会压缩。我可以使用该文件的早期版本,或者更高版本,它会很好地压缩

zip实用程序不应该关心版本,因此我假设它认为文件不知何故已损坏。如何调试此问题?当我单步执行代码时,问题不会发生,但如果我让它运行,它会在保存此特定文件时暂停。以下是库中的代码:

ICollection<ZipEntry> c = (SortEntriesBeforeSaving) ? EntriesSorted : Entries;
foreach (ZipEntry e in c) // _entries.Values
{
    OnSaveEntry(n, e, true);
    e.Write(WriteStream);
    if (_saveOperationCanceled)
        break;

    n++;
    OnSaveEntry(n, e, false);
    if (_saveOperationCanceled)
        break;

    // Some entries can be skipped during the save.
    if (e.IncludedInMostRecentSave)
        thisSaveUsedZip64 |= e.OutputUsedZip64.Value;
}
这种压缩模式会导致问题。我很确定这是某种错误。另一种压缩方法Bzip2的速度非常慢。我还不知道我该怎么解决这个问题

编辑3:

DotNetZip确实很奇怪。我通过将压缩级别调整为:

zip.CompressionLevel = CompressionLevel.Default;
这解决了问题,但几分钟后我回来了,它不再工作了。Bzip2仍然有效,但正如我之前所说,它的速度非常慢。因此,我开始摆弄ZipFile API的其他部分,并添加了以下内容:

zip.CodecBufferSize = 10240000;

这使它现在起作用了。我不知道这个bug到底是什么?

这不是一个真正的答案,而是一个建议-尝试使用7zip的命令行工具。可能只有我一个人,但我使用过的所有.NETZIP库都有问题。(我确信有些是好的,只是不是我试过的那些)。7zip非常灵活,压缩效果非常好,但需要称为命令行。FWIW.DotNEtZip的版本是什么?其他人报告使用v1.9.1.8时出现问题,文件大小为128k的倍数。如果那里有bug,它可能不会出现在早期版本的DotNetZip或大小不同的文件中。
zip.CodecBufferSize = 10240000;