我正在使用c#程序下载一个zip文件,我收到错误
at System.IO.Compression.ZipArchive.ReadEndOfCentralDirectory()
at System.IO.Compression.ZipArchive.Init(Stream stream, ZipArchiveMode mode,
Boolean leaveOpen)
at System.IO.Compression.ZipArchive..ctor(Stream stream, ZipArchiveMode mode,
Boolean leaveOpen, Encoding entryNameEncoding)
at System.IO.Compression.ZipFile.Open(String archiveFileName, ZipArchiveMode
mode, Encoding entryNameEncoding)
at System.IO.Compression.ZipFile.ExtractToDirectory(String sourceArchiveFileN
ame, String destinationDirectoryName, Encoding entryNameEncoding)
at System.IO.Compression.ZipFile.ExtractToDirectory(String sourceArchiveFileN
ame, String destinationDirectoryName)
Run Code Online (Sandbox Code Playgroud)
这是程序
response = (HttpWebResponse)request.GetResponse();
Stream ReceiveStream = response.GetResponseStream();
byte[] buffer = new byte[1024];
FileStream outFile = new FileStream(zipFilePath, FileMode.Create);
int bytesRead;
while ((bytesRead = ReceiveStream.Read(buffer, 0, buffer.Length)) != 0)
outFile.Write(buffer, 0, bytesRead);
outFile.Close();
response.Close();
try
{
ZipFile.ExtractToDirectory(zipFilePath, destnDirectoryName);
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
我不明白这个错误.任何人都可以解释这个谢谢MR
paq*_*mez 29
问题是Unzip无法找到表示存档结束的代码行,因此:
它不是.zip存档.
使用您喜欢的zip实用程序打开文件将告诉它可能是哪一个.
Sco*_*ain 14
从您删除的旧问题.
我得到System.IO.InvalidDataException:找不到中央目录记录的结尾.
这很可能意味着您传入的文件格式不正确且Zip失败.由于您已经outfile在硬盘驱动器上安装了该文件,我建议您尝试使用内置于zip提取器的Windows打开该文件,看看它是否有效.如果失败,问题不在于您的解压缩代码,而在于服务器发送给您的数据.
我有同样的问题,但在我的情况下问题是压缩部分而不是解压缩.
在压缩过程中,我需要使用Stream和ZipArchive对象的"Using"statament."使用"statament将正确关闭存档,我可以毫无问题地解压缩它.
我在VB.Net中的工作代码:
Using zipSteramToCreate As New MemoryStream()
Using archive As New ZipArchive(zipSteramToCreate, ZipArchiveMode.Create)
' Add entry...
End Using
' Return the zip byte array for example:
Return zipSteramToCreate.ToArray
End Using
Run Code Online (Sandbox Code Playgroud)