【发布时间】:2014-07-24 18:52:25
【问题描述】:
System.IO.Compression.ZipFile.ExtractToDirectory(zipPath, extractPath);
在 C# 中使用 ZipFile,我试图从已知位置提取文件,但它会引发以下错误: System.IO.Exception:Zip 条目名称以目录分隔符结尾,但包含数据
我做了一些研究,ExtractToDirectory 在 MSDN 中有解释,但找不到这个错误定义。您能否解释为什么会发生此错误?
来自 MSDN:
IO异常
destinationDirectoryName 指定的目录已经存在。
-或-
存档中的条目名称为空,仅包含空格,或包含至少一个无效字符。
-或-
提取存档条目将创建一个位于由destinationDirectoryName 指定的目录之外的文件。 (例如,如果条目名称包含父目录访问器,则可能会发生这种情况。)
-或-
要提取的存档条目与已从同一存档中提取的条目具有相同的名称。
【问题讨论】:
-
我猜这基本上意味着存储在 zip 存档中的文件名包含
..或以 `` 结尾。你确定你不会以某种方式弄乱路径,例如使用目标路径作为 zip 存档内部路径? -
我花了几个小时后发现的一件事是,这个问题与 zip 文件的生成方式有关。为了解决这个问题,我使用 7-zip 生成了 zip 文件。使用 winRar 生成 zip 文件解决了该问题。我仍然不知道它的根本原因。
-
@Mario,这也是我最初的猜测。但是我没有发现有关路径的任何问题(尽管感谢您的评论)。
标签: c# exception extraction zipfile