ZipEntry to ZipFile.

Feb 4, 2010 at 10:52 AM

Hi

I have a ZipFile which contains another zipfile as an entry in it. I am trying to access it in the following way:

using (ZipFile zf = ZipFile.Read(entryName))
                {
                    ZipEntry zeData = null;
                    foreach (ZipEntry ze in zf.Entries)
                    {
                        string fName = System.IO.Path.GetFileName(ze.FileName);
                        if (!fName.Equals("iSai.zip"))
                        {
                            zeData = ze;
                            break;
                        }
                    }
                    MemoryStream ms = new MemoryStream();
                    zeData.Extract(ms);
                    ZipFile zfData = ZipFile.Read(ms);

 

But it throws this exception:

 

{Ionic.Zip.BadReadException: Could not read block - no data!  (position 0x00000000)
   at Ionic.Zip.SharedUtilities._ReadFourBytes(Stream s, String message)
   at Ionic.Zip.SharedUtilities.ReadInt(Stream s)
   at Ionic.Zip.ZipFile.VerifyBeginningOfZipFile(Stream s)
   at Ionic.Zip.ZipFile.ReadIntoInstance(ZipFile zf)
   at Ionic.Zip.ZipFile.Read(Stream zipStream, TextWriter statusMessageWriter, Encoding encoding, EventHandler`1 readProgress)
   at Ionic.Zip.ZipFile.Read(Stream zipStream, TextWriter statusMessageWriter, Encoding encoding)
   at Ionic.Zip.ZipFile.Read(Stream zipStream)
   at ModelBase.getStreamFor(String entryName) in C:\Inetpub\wwwroot\New Folder\BLL\Class1.cs:line 1186}

 

Please let me know if you have any suggestions.

Thanks

 

Coordinator
Feb 4, 2010 at 11:00 AM

You must insert a line,

   ms.Seek(0, SeekOrigin.Begin);

before

    ZipFile.Read(ms);

 

 

Feb 4, 2010 at 11:30 AM

Thanks Cheeso.