【发布时间】:2009-02-06 14:49:46
【问题描述】:
我有一个使用 SharpZIPlib 解压缩一些 zip 文件的 C# 程序?它工作正常,但在一个文件上,我不断收到“Unexpected EOF”错误?实际上是否存在 EOF 标记,或者 Zip 文件是否被截断?
【问题讨论】:
标签: c# zip file-format eof
我有一个使用 SharpZIPlib 解压缩一些 zip 文件的 C# 程序?它工作正常,但在一个文件上,我不断收到“Unexpected EOF”错误?实际上是否存在 EOF 标记,或者 Zip 文件是否被截断?
【问题讨论】:
标签: c# zip file-format eof
您的文件被截断(或可能扩展或损坏)。
您可以在其上运行常规解压缩程序(例如“unzip -l file.zip”)来证明这一点。
顺便说一句,如果您使用 FTP 下载文件,您还记得使用二进制传输吗?如果您(不小心)使用了 ASCII 模式,那将破坏任何二进制文件,例如 ZIP 存档。
【讨论】:
一个简单的 ZIP 文件如下所示:
LocalHeader1
CompressedData1
LocalHeader2
CompressedData2
[...]
LocalHeaderN
CompressedDataN
CentralHeader1
CentralHeader2
[...]
CentralHeaderN
EndHeader
EndHeader 包含(除其他外)第一个 CentralHeader 的偏移量,然后每个 CentralHeader 包含与其匹配的 LocalHeader 的偏移量。
有些库可以从一开始就读取zip文件,依次处理LocalHeaders,从而恢复损坏的zip文件可以恢复的内容。
【讨论】:
Unexpected EOF 的确切含义是:在读取文件时,函数遇到了文件末尾,而库期待其他东西(数据)。它不是标记。
【讨论】:
您尝试过 DotNetZip 吗? http://www.codeplex.com/DotNetZip
【讨论】: