0

我在使用 IonicZip 损坏我打包的文件时遇到了一些问题。起初我以为是因为文件名,但我现在发现情况并非如此。这是我用来打包东西的代码

        using (ZipFile pack = new ZipFile())
        {
            pack.AddProgress += (s, eventArgs) =>
            {
                if (eventArgs.EventType == ZipProgressEventType.Adding_AfterAddEntry)
                {
                    Regex pattern = new Regex("[(]|[)]|[']|[[]|[]]|[+]");
                    eventArgs.CurrentEntry.FileName = pattern.Replace(eventArgs.CurrentEntry.FileName, "");
                }
            };
            pack.AddDirectory(defPackageCreationPath + "\\installfiles", "");            
            pack.Save(outputPath + "\\package.mpp");
        }

我使用正则表达式从正在打包的文件的文件名中删除显示的字符,因为我认为这是因为文件名以某种方式损坏了。但事实并非如此。

这是一个例子。我可以毫无问题地打包这个文件

[Forge]FurnitureModv2.9.2(FULL).zip

然而!如果我将同一个文件与许多其他文件打包在一起,一切都会搞砸..

看一下源文件夹的截图,我从中获取文件并用上面的代码打包它们,以及右侧的提取文件夹:

左:来源,右:提取

请注意源目录中的文件大小与提取的文件大小不匹配?好吧,再看看大小.. 文件名与源文件名不匹配!我之前提到的 [Forge]FurnitureModv2.9.2(FULL).zip 文件,现在称为 ForgeFurnitureModv2.9.2FULL.zip,从 467KB 减小到 51KB,如果我尝试打开它,我被告知它已损坏.. 但是看看 TooMuchTNT v2.5.zip 文件.. 这个文件大小是 467KB,因为另一个文件来自源,如果我打开这个文件,我会得到应该在 [Forge]FurnitureModv2 中的内容.9.2(完整).zip !

所以总而言之我有两个问题:

  1. 因为文件名与源文件夹中的内容不匹配
  2. 某些文件已损坏,但是如果我打包的文件在没有任何其他文件的情况下已损坏,则它可以正常工作,并且不会损坏。

你能帮忙吗?也许我错误地打包了文件?

4

0 回答 0