我有一个使用SharpZIPlib解压缩一些zip文件的C#程序?它工作正常,但在一个文件,我不断收到“意外的EOF”错误?实际上是否有EOF标记,或Zip文件是否被截断?
答案 0 :(得分:6)
您的文件被截断(或可能被扩展或以其他方式损坏)。
您可以在其上运行常规解压缩程序(例如“unzip -l file.zip
”)来证明这一点。
顺便提一下,如果你使用FTP下载文件,你还记得使用二进制传输吗?如果您(意外地)使用了ASCII模式,那将破坏任何二进制文件,例如ZIP存档。
答案 1 :(得分:4)
一个简单的ZIP文件如下所示:
LocalHeader1
CompressedData1
LocalHeader2
CompressedData2
[...]
LocalHeaderN
CompressedDataN
CentralHeader1
CentralHeader2
[...]
CentralHeaderN
EndHeader
EndHeader包含(除其他外)第一个CentralHeader的偏移量,然后每个CentralHeader包含其匹配的LocalHeader的偏移量。
有些库可以从头开始读取zip文件,依次处理LocalHeaders,从而恢复损坏的zip文件可以恢复的内容。
答案 2 :(得分:2)
意外的EOF意味着:在读取文件时,函数遇到了文件的结尾,而库正在等待其他东西(数据)。它不是标记。
答案 3 :(得分:1)
你试过DotNetZip吗? http://www.codeplex.com/DotNetZip