User (Old forums)MemberJuly 24, 2006 at 5:13 pmPost count: 23064
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?
Imported from legacy forums. Posted by James (had 3929 views)Xceed SupportMemberJuly 25, 2006 at 1:33 pmPost count: 5658
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)MemberJuly 25, 2006 at 3:05 pmPost 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:
An I/O exception occurred while copying the data from the item to its destination.
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?
Imported from legacy forums. Posted by James (had 348 views)Xceed SupportMemberJuly 25, 2006 at 3:47 pmPost count: 5658
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 email@example.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)
- You must be logged in to reply to this topic.