![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Visual FoxPro) Unzip One File to a StreamDemonstrates how to unzip a particular file contained within a .zip archive to a Chilkat stream. Note: This example requires Chilkat v11.0.0 or greater.
LOCAL lnSuccess LOCAL loZip LOCAL loEntry LOCAL loStreamA LOCAL loStreamB LOCAL loUnzipTask LOCAL loSb LOCAL loStreamC LOCAL s lnSuccess = 0 * This example requires the Chilkat API to have been previously unlocked. * See Global Unlock Sample for sample code. loZip = CreateObject('Chilkat.Zip') * First open a .zip. lnSuccess = loZip.OpenZip("qa_data/hamlet.zip") IF (lnSuccess = 0) THEN ? loZip.LastErrorText RELEASE loZip CANCEL ENDIF * Find the entry to be unzipped to a stream.. loEntry = CreateObject('Chilkat.ZipEntry') lnSuccess = loZip.EntryMatching("*hamlet.xml",loEntry) IF (lnSuccess = 0) THEN ? loZip.LastErrorText RELEASE loZip RELEASE loEntry CANCEL ENDIF * There are three ways we can unzip (inflate) to a stream. * * 1) Set a sink file on the stream object and call UnzipToStream synchronously. * This unzips to the stream's sink (which is to simply unzip to a file in the filesystem). * * 2) Create a stream object and call UnzipToStreamAsync. This starts the unzip in a background * thread (after Task.Run is called). Your application can then read the unzipped (inflated) file * directly from the stream. * * 3) (not shown in this example) Unzip to a stream object that is the source of something else. * * ---------------------------------------------------------------- * Case 1: Unzip to a file by setting the sink of streamA to a file. loStreamA = CreateObject('Chilkat.Stream') loStreamA.SinkFile = "qa_output/hamletA.xml" lnSuccess = loEntry.UnzipToStream(loStreamA) IF (lnSuccess <> 1) THEN ? loEntry.LastErrorText RELEASE loZip RELEASE loEntry RELEASE loStreamA CANCEL ENDIF * Close the stream to close the output file. lnSuccess = loStreamA.WriteClose() * ---------------------------------------------------------------- * Case 2a: Uzip to a stream asynchronously. loStreamB = CreateObject('Chilkat.Stream') loUnzipTask = loEntry.UnzipToStreamAsync(loStreamB) IF (loEntry.LastMethodSuccess <> 1) THEN ? loEntry.LastErrorText RELEASE loZip RELEASE loEntry RELEASE loStreamA RELEASE loStreamB CANCEL ENDIF * Start the background unzip thread. loUnzipTask.Run() * Read the stream. (this is reading the unzipped file data) loSb = CreateObject('Chilkat.StringBuilder') DO WHILE loStreamB.EndOfStream <> 1 * Each call to ReadSb appends to the contents of sb. loStreamB.ReadSb(loSb) ENDDO loSb.WriteFile("qa_output/hamletB.xml","utf-8",0) RELEASE loUnzipTask ? "Success." * ---------------------------------------------------------------- * Case 2b: Uzip to a stream asynchronously and emit output while reading. loStreamC = CreateObject('Chilkat.Stream') loUnzipTask = loEntry.UnzipToStreamAsync(loStreamC) IF (loEntry.LastMethodSuccess <> 1) THEN ? loEntry.LastErrorText RELEASE loZip RELEASE loEntry RELEASE loStreamA RELEASE loStreamB RELEASE loSb RELEASE loStreamC CANCEL ENDIF loUnzipTask.Run() DO WHILE loStreamC.EndOfStream <> 1 s = loStreamC.ReadString() ? s ENDDO RELEASE loUnzipTask ? "Success." RELEASE loZip RELEASE loEntry RELEASE loStreamA RELEASE loStreamB RELEASE loSb RELEASE loStreamC |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.