我在使用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
然而!如果我用很多其他文件打包同一个文件,一切都搞砸了..
看看源文件夹的这个屏幕截图,我从中获取文件并用上面的代码打包它们,并将解压缩的文件夹放在右边:
请注意源目录中的文件大小与提取的内容不匹配?那么再看一下尺寸..文件名与源的文件名不匹配!我之前提到的文件[Forge] FurnitureModv2.9.2(FULL).zip,现在叫做ForgeFurnitureModv2.9.2FULL.zip,从467KB下降到51KB,如果我试图打开它,我被告知它已损坏..但看看TooMuchTNT v2.5.zip文件..这个文件大小是467KB,因为另一个文件来自源,如果我打开这个文件我得到应该在[Forge] FurnitureModv2的内容.9.2(全).zip!
总而言之,我有两个问题: