Zip条目名称以目录分隔符字符结尾但包含数据
System.IO.Compression.ZipFile.ExtractToDirectory(zipPath, extractPath);
在C#中使用ZipFile,我正在尝试从已知位置提取文件,并且它抛出以下错误:System.IO.Exception:Zip条目名称以目录分隔符字符结尾但包含数据
我做了一些研究,在MSDN中解释了ExtractToDirectory但是找不到这个错误定义。 你能解释为什么会发生这种错误吗?
来自MSDN:
IOExceptionexception
destinationDirectoryName指定的目录已存在。
-要么-
存档中条目的名称为空,仅包含空格,或至少包含一个无效字符。
-要么-
提取存档条目将创建一个位于destinationDirectoryName指定的目录之外的文件。 (例如,如果条目名称包含父目录访问器,则可能会发生这种情况。)
-要么-
要提取的存档条目与已从同一存档中提取的条目具有相同的名称。
我的研究表明,当您使用“Ultra”压缩级别使用7-Zip实用程序压缩文件时,某些存档无法使用.NET System.IO.Compression.ZipFile.ExtractToDirectory()方法解压缩。 错误消息是:Zip条目名称以目录分隔符字符结尾但包含数据。
根据我的观察,只有满足以下3个条件时才会出现此错误:
- 目标存档很大 – 500MB +(小档案似乎解压缩很好)。
- 存档的根目录只包含文件夹(如果您将至少一个文件添加到存档的根目录,它也会解压缩)。
- 使用7-Zip Ultra压缩。
最后我找到了这个7-Zip bug的三个解决方案。
解决方案1 :将至少一个文件添加到存档的根目录(任何虚拟文件或readme.txt文件)。
解决方案2 :使用本机Windows压缩实用程序(选择文件,右键单击,发送到 – >压缩文件夹)。
解决方案3 :不要使用7-Zip Ultra压缩。
所有这些解决方案都解决了我的问题。 选择最适合您项目的项目。
ZipArchive条目以目录分隔符“/”结尾但具有长度!= 0时发生错误
您可以轻松找到这些条目
上述就是C#学习教程:Zip条目名称以目录分隔符字符结尾但包含数据分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)
zip.Entries.Where(o => o.FullName.EndsWith("/") && o.Length != 0)
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。
如若转载,请注明出处:https://www.ctvol.com/cdevelopment/956759.html