Inflate from Zip to memory in C++
This example demonstrates how to inflate in-memory from a Zip in C++:
CkZip zip;
...
// Assume we have a CkZip object and a .zip has been loaded.
// It may have been loaded from a file by calling OpenZip, or from an
// in-memory image of a .zip by calling OpenFromMemory.
// (or any of the other CkZip.Open* methods)
CkString strXml;
CkByteData gifData;
// Find the file within the zip containing the data we want to access...
CkZipEntry *entry = zip.FirstMatchingEntry("*hamlet.xml");
if (entry)
{
// Found it. This is a text file that may be inflated to a null-terminated
// string.
const char *xmlText = entry->inflateToString2();
// Copy the text to a safe place. Once the CkZipEntry object is deleted,
// it is no longer a valid pointer:
strXml.append(xmlText);
delete entry;
}
// Get the data for a binary file:
entry = zip.FirstMatchingEntry("*dude.gif");
if (entry)
{
entry->Inflate(gifData);
delete entry;
// The binary bytes may be accessed like this:
const unsigned char *gifBytes = gifData.getData();
unsigned long numGifBytes = gifData.getSize();
}
admin
0
Tags :