Quantcast
Channel: SharpDevelop Community
Viewing all articles
Browse latest Browse all 1764

Cannot find central directory

$
0
0

I am having a problem unzipping a GZIP file...I do not know what process was used to zip it as it comes from a client.  However, the file can be sucessfully unzipped using the 7-Zip execuatable.  Furthermore, the GZIP file contains several layers of folder structure with the ultimate zipped file residing 5 or 6 layers down the tree.  Could that be the problem?  Can SharpZipLib handle multiple folder layers?

In the Catch, the Exception is: 

Cannot find central directory

 

 

Here is the code i am using to attemp to unzip the folders/file:

string currDir = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase).Substring(6);                

                ZipFile zf = null;

                try {

                    FileStream fs = File.OpenRead(currDir + "\\TSUSDLYRPT.GZIP");

                    zf = new ZipFile(fs);

                    //if (!String.IsNullOrEmpty(password)) {

                    //    zf.Password = password;     // AES encrypted entries are handled automatically

                    //}

                    foreach (ZipEntry zipEntry in zf) {

                        if (!zipEntry.IsFile) {

                            continue;           // Ignore directories

                        }

                        String entryFileName = zipEntry.Name;

                        // to remove the folder from the entry:- entryFileName = Path.GetFileName(entryFileName);

                        // Optionally match entrynames against a selection list here to skip as desired.

                        // The unpacked length is available in the zipEntry.Size property.

 

                        byte[ buffer = new byte[4096];     // 4K is optimum

                        Stream zipStream = zf.GetInputStream(zipEntry);

 

                        // Manipulate the output filename here as desired.

                        String fullZipToPath = Path.Combine(currDir, entryFileName);

                        string directoryName = Path.GetDirectoryName(fullZipToPath);

                        if (directoryName.Length > 0)

                            Directory.CreateDirectory(directoryName);

 

                        // Unzip file in buffered chunks. This is just as fast as unpacking to a buffer the full size

                        // of the file, but does not waste memory.

                        // The "using" will close the stream even if an exception occurs.

                        using (FileStream streamWriter = File.Create(fullZipToPath)) {

                            StreamUtils.Copy(zipStream, streamWriter, buffer);

                        }

                    }

 

                } 

                catch(Exception ex){}

                finally {

                    if (zf != null) {

                        zf.IsStreamOwner = true; // Makes close also shut the underlying stream

                        zf.Close(); // Ensure we release resources

                    }

                }

======================================

 

The error occurs on the line:

zf = new ZipFile(fs);

 

The fs object is populated however.

Is there a way for me to attach the actual GZIP file (it is only 3K)?  I cannot see how...

 

Can anyone diagnose this issue without the actual file?

Thanks in advance for all assistance!!


Viewing all articles
Browse latest Browse all 1764

Trending Articles