Home Forums .NET libraries Xceed Zip & Real-Time Zip for .NET Problem unzipping 4GB+

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • User (Old forums)
    Member
    Post count: 23064
    #19637 |

    I’m trying to unzip a spanned archive which contains a file of approximately 7.2GB. I get an IOException during the unzip, just about when the large file has hit 4GB.

    I thought that the 4GB limit had been fixed in version 2.3 of the .NET client, and I’m using 3.0. This is the code I’m using to unzip:

    public static void Unzip(string ZipFile, string DestFolder)
    {
    ZipArchive zip = new ZipArchive(new DiskFile(ZipFile));
    DiskFolder folder = new DiskFolder(DestFolder);
    zip.CopyFilesTo(folder, true, true);
    }

    Can anyone help out?

    thanks!
    –stames

    Imported from legacy forums. Posted by James (had 3929 views)

    Xceed Support
    Member
    Post count: 5658

    Hi stames,

    looking at your code, you don’t seem to use a ZipEvents object when unzipping the files. This object have an event called “DiskRequired” which you have to handle to be able to specify the next file to use when uncompressing the archive. This can explain why you are getting an IOException. (actually, it should be a ZipIOException. Can you confirm this?)

    There are some good example of code in our FileSystem Snippet Explorer which can be found in your start menu under:

    All Programs\Xceed Components\Our components in action!

    You can look at the topic #3.5.2 (and the ones near it) to give you some guidelines to handle this event.

    Hope this help! 🙂

    Imported from legacy forums. Posted by Jacques [Xceed] (had 254 views)

    User (Old forums)
    Member
    Post count: 23064

    I think I used the wrong terminology–this actually a *split* zip file, not a spanned file. The files are named .zip, .z01, .z02, …, .z232 and are 20,480K each.

    The exception is actually a Xceed.FileSystem.FileSystemIOException. Here’s the details:

    Message:
    An I/O exception occurred while copying the data from the item to its destination.
    Type: Xceed.Zip.ZippedFile
    FullName: \File.XSF

    StackTrace:
    at Xceed.FileSystem.AbstractFolder.CopyFilesTo(FileSystemEvents events, Object userData, AbstractFolder destinationFolder, Boolean recursive, Boolean replaceExistingFiles, Object[] filters)
    at Xceed.FileSystem.AbstractFolder.CopyFilesTo(AbstractFolder destinationFolder, Boolean recursive, Boolean replaceExistingFiles, Object[] filters)

    The Inner exception is a System.IO.IOException:

    “The checksum for the data read from the stream does not match the expected checksum.”

    StackTrace for this is:

    at Xceed.Utils.Streams.ChecksumStream.Read(Byte[] buffer, Int32 offset, Int32 count)
    at Xceed.FileSystem.AbstractFile.DoCopyTo(FileSystemEventsSession session, FileSystemItem destination, Boolean replaceExistingFiles)

    It looks like this checksum stream read is using a 32-bit integer for the offset, which won’t work on a file of greater than 4GB, correct? Is this corrected in a later version, or is there a way to force it to treat this as Zip64?

    thanks again,
    –stames

    Imported from legacy forums. Posted by James (had 348 views)

    Xceed Support
    Member
    Post count: 5658

    Hi stames,

    for the Read method of the ChecksumStream, the offset parameter is the offset in the buffer at which storing should begin and not the offset in the stream itself.

    The error you are getting seems to indicate a corruption in the file. To be sure of that, we should investigate the issue a little more. I suggest you contact technical support at support@xceedsoft.com regarding this issue. They will be able to help you troubleshoot the problem you are experiencing.

    Imported from legacy forums. Posted by Jacques [Xceed] (had 4209 views)

Viewing 4 posts - 1 through 4 (of 4 total)
  • You must be logged in to reply to this topic.