Ionic Zip打包文件损坏并显示文件名

时间:2013-10-17 19:15:52

标签: c# regex zip

我在使用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");
        }

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

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

[Forge]FurnitureModv2.9.2(FULL).zip

然而!如果我用很多其他文件打包同一个文件,一切都搞砸了..

看看源文件夹的这个屏幕截图,我从中获取文件并用上面的代码打包它们,并将解压缩的文件夹放在右边:

Left: Source, Right: Extracted

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

总而言之,我有两个问题:

  1. 由于文件名与源文件夹
  2. 中的内容不匹配
  3. 一些文件被破坏,但是如果我打包一个文件,它被破坏而没有任何其他文件,它可以正常工作,并且它不会被破坏。
  4. 你能帮忙吗?也许我错误地打包文件?

0 个答案:

没有答案