End of Central Directory record could not be found

The problem is ZipFile can't find the line of code that signals the end of the archive, so either:

  1. It is not a .zip archive.

    • It may be a .rar or other compressed type. Or as I suspect here, you are downloading an html file that auto-redirects to the zip file.
    • Solution - Gotta find a correct archive to use this code.
  2. The archive is corrupt.

    • Solution - The archive will need repairing.
  3. There is more than 1 part to the archive.

    • A multi part zip file.
    • Solution - Read in all the files before decompression.
  4. As @ElliotSchmelliot notes in comments, the file may be hidden or have extended characters in the name.

    • Solution - Check your file attributes/permissions and verify the file name.

Opening the file with your favorite zip/unzip utility (7-zip, winzip, etc) will tell which of these it could be.


From your old question you deleted.

I get System.IO.InvalidDataException: End of Central Directory record could not be found.

This most likely means whatever file you are passing in is malformed and the Zip is failing. Since you already have the file outfile on the hard drive I would recommend trying to open that file with with windows built in zip extractor and see if it works. If it fails the problem is not with your unzipping code but with the data the server is sending to you.


I have the same problem, but in my case the problem is with the compression part and not with the decompression.

During the compression I need use the "Using" statament with the Stream and the ZipArchive objects too. The "Using" statament will Close the archive properly and I can decompress it without any problem.

The working code in my case in 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