【发布时间】:2019-10-22 09:47:08
【问题描述】:
我正在使用创建拉链
System.IO.Compression.ZipFile.CreateFromDirectory(startPath,zipPath)。
之后在 Windows 上一切都很好 - 他们解压得很好。如果我在 MacOS (Mojave) 上解压这些文件,文件夹结构就会丢失。
例如,我有 ziptest.zip:
A/B/C/file1.txt
A/B/C/file1.txt
在 MacOS 上(使用上下文菜单的“打开方式...存档实用程序(标准)”,我得到一个文件夹 ziptest,其中包含文件 A\B\C\file1.txt 和 A\B\C\file2.txt。
看起来好像目录分隔符是问题所在。但我不敢相信 MS 会如此盲目地错过这个问题。 (虽然这似乎很常见 - 我尝试了各种 cmdline-zippers,但只有 SFK 做得对......)
是否有一个简单的解决方案,或者它真的是一个 MS 错误? (我们怎样才能修复它......?)
更新以回答 Panagiotis 的问题:我正在使用对应于 4.8 的版本 528040。 (不幸的是,它不再像System.Environment.Version 那样简单,我们又来检查registry...)
【问题讨论】:
-
您使用哪个 .NET 版本来压缩数据? This possibly duplicate question 解释说从 4.6.1 开始使用正斜杠。
-
好问题,谢谢!应该提到这一点 - 所以我更新了问题......
-
所以它是 not .NET Core 正如标签所说
-
对 - 我必须检查为什么不是。但还是。 4.8>4.6.1...
-
无复制。调用
ZipFile.CreateFromDirectory(@"c:\somesource",@"c:\somefolder\target.zip");会生成一个 zip,当使用存档实用程序打开时,它会重建在somesource中找到的所有子文件夹。您必须发布一个实际重现问题的最小示例。在 Catalina 上试过