1

我有一个使用 SharpZIPlib 解压缩一些 zip 文件的 C# 程序?它工作正常,但在一个文件上,我不断收到“Unexpected EOF”错误?实际上是否存在 EOF 标记,或者 Zip 文件是否被截断?

4

4 回答 4

6

您的文件被截断(或可能扩展或以其他方式损坏)。

您可以在其上运行常规解压缩程序(例如“ unzip -l file.zip”)来证明这一点。

顺便说一句,如果您使用 FTP 下载文件,您是否记得使用二进制传输?如果您(不小心)使用了 ASCII 模式,那将破坏任何二进制文件,例如 ZIP 存档。

于 2009-02-06T14:51:40.947 回答
4

一个简单的 ZIP 文件如下所示:

LocalHeader1
CompressedData1
LocalHeader2
CompressedData2
[...]
LocalHeaderN
CompressedDataN
CentralHeader1
CentralHeader2
[...]
CentralHeaderN
EndHeader

EndHeader 包含(除其他外)第一个 CentralHeader 的偏移量,然后每个 CentralHeader 包含与其匹配的 LocalHeader 的偏移量。

一些库可以从一开始就读取 zip 文件以顺序处理 LocalHeaders,从而恢复损坏的 zip 文件可以恢复的内容。

于 2009-02-06T19:11:04.557 回答
2

Unexpected EOF 的确切含义是:在读取文件时,函数遇到了文件末尾,而库正在期待其他东西(数据)。它不是一个标记。

于 2009-02-06T14:52:19.713 回答
1

你试过 DotNetZip 吗? http://www.codeplex.com/DotNetZip

于 2009-02-10T06:15:30.570 回答