Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... 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.
LOCAL loZip LOCAL lnSuccess LOCAL loEntry LOCAL loStreamA LOCAL loStreamB LOCAL loUnzipTask LOCAL loSb LOCAL loStreamC LOCAL s * This example requires the Chilkat API to have been previously unlocked. * See Global Unlock Sample for sample code. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Zip') loZip = CreateObject('Chilkat.Zip') * First open a .zip. lnSuccess = loZip.OpenZip("qa_data/hamlet.zip") IF (lnSuccess <> 1) THEN ? loZip.LastErrorText RELEASE loZip CANCEL ENDIF * Find the entry to be unzipped to a stream.. loEntry = loZip.FirstMatchingEntry("*hamlet.xml") IF (loZip.LastMethodSuccess <> 1) THEN ? loZip.LastErrorText RELEASE loZip 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. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Stream') loStreamA = CreateObject('Chilkat.Stream') loStreamA.SinkFile = "qa_output/hamletA.xml" lnSuccess = loEntry.UnzipToStream(loStreamA) IF (lnSuccess <> 1) THEN ? loEntry.LastErrorText RELEASE loEntry RELEASE loZip RELEASE loStreamA CANCEL ENDIF * Close the stream to close the output file. lnSuccess = loStreamA.WriteClose() * ---------------------------------------------------------------- * Case 2a: Uzip to a stream asynchronously. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Stream') loStreamB = CreateObject('Chilkat.Stream') loUnzipTask = loEntry.UnzipToStreamAsync(loStreamB) IF (loEntry.LastMethodSuccess <> 1) THEN ? loEntry.LastErrorText RELEASE loEntry RELEASE loZip RELEASE loStreamA RELEASE loStreamB CANCEL ENDIF * Start the background unzip thread. loUnzipTask.Run() * Read the stream. (this is reading the unzipped file data) * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.StringBuilder') 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. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Stream') loStreamC = CreateObject('Chilkat.Stream') loUnzipTask = loEntry.UnzipToStreamAsync(loStreamC) IF (loEntry.LastMethodSuccess <> 1) THEN ? loEntry.LastErrorText RELEASE loEntry RELEASE loZip RELEASE loStreamA RELEASE loStreamB RELEASE loSb RELEASE loStreamC CANCEL ENDIF loUnzipTask.Run() DO WHILE loStreamC.EndOfStream <> 1 s = loStreamC.ReadString() ? s ENDDO RELEASE loEntry RELEASE loUnzipTask ? "Success." RELEASE loZip RELEASE loStreamA RELEASE loStreamB RELEASE loSb RELEASE loStreamC |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.