IP*Works! ZIP V8

ipworkszip
Class Gzip

java.lang.Object
  |
  +--ipworkszip.Gzip

public class Gzip
extends java.lang.Object

The Gzip bean implements a gzip compressor and decompressor. It is compliant with RFC 1952 and compatible with the UNIX gzip and gunzip utilities.

The gzip file format is typically used only to archive a single file. Accordingly, the operation of the bean is simpler than that of the other beans.

To compress with the bean, set ArchiveFile to the name of the gzip file to be created, and FileDecompressedName to the name of the file to be compressed. Finally, invoke Compress . To extract the file, first set ArchiveFile . FileDecompressedName may then be set; if not, it will automatically be set from the gzip file headers. Finally, invoke the Extract or Compress method.

.tar.gz files may be created or extracted in one step by using the Tar bean. See the documentation for Tar for more details.

Example (Creating a Gzip File)

 ZipControl.ArchiveFile = "c:\\test.gz"
 ZipControl.FileDecompressedName = "c:\\test.txt"
 ZipControl.Compress() 
Example (Extracting from a Gzip File)

 ZipControl.ArchiveFile = "c:\\test.gz"
 ZipControl.FileDecompressedName = "c:\\test.txt"
 ZipControl.Extract() 


Field Summary
static int cmDeflate
           
static int cmLZCCompress
           
 
Constructor Summary
Gzip()
           
 
Method Summary
 void abort()
          Aborts the current operation.
 void addGzipEventListener(ipworkszip.GzipEventListener l)
           
 void append()
          Adds specified file to an existing archive.
 void compress()
          Creates the compressed gzip archive.
 java.lang.String config(java.lang.String configurationString)
          Sets or retrieves a configuration setting.
 void extract()
          Extracts the compressed file from the gzip archive.
 void extractAll()
          Extracts all files from the compressed archive.
 java.lang.String getArchiveFile()
          The name of the zip, gzip, tar, or jar archive.
 int getCompressionLevel()
          The compression level to use.
 int getCompressionMethod()
          The compression method for the bean to use.
 java.lang.String getExtractToPath()
          A base path to decompress to.
 long getFileCompressedDate()
          The date and time of the compressed file, as stored within the gzip archive.
 java.lang.String getFileCompressedName()
          Filename, as stored inside of the archive.
 java.lang.String getFileDecompressedName()
          File name to decompress to, or compress from.
 boolean isHasMoreData()
          Shows whether or not there is more data in the gzip archive.
 void removeGzipEventListener(ipworkszip.GzipEventListener l)
           
 void scan(javax.servlet.http.HttpServletRequest request)
          Scans the compressed archive.
 void setArchiveFile(java.lang.String archiveFile)
          The name of the zip, gzip, tar, or jar archive.
 void setArchiveInputStream(java.io.InputStream archiveStream)
          The stream to read the zip, tar, jar, or gzip archive from.
 void setArchiveOutputStream(java.io.OutputStream archiveStream)
          The stream to write the zip, tar, jar, or gzip archive to.
 void setCompressionLevel(int compressionLevel)
          The compression level to use.
 void setCompressionMethod(int compressionMethod)
          The compression method for the bean to use.
 void setExtractToPath(java.lang.String extractToPath)
          A base path to decompress to.
 void setFileCompressedName(java.lang.String fileCompressedName)
          Filename, as stored inside of the archive.
 void setFileDecompressedName(java.lang.String fileDecompressedName)
          File name to decompress to, or compress from.
 void setFileInputStream(java.io.InputStream archiveStream)
          The input stream to read the decompressed data from.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

cmDeflate

public static final int cmDeflate
See Also:
Constant Field Values

cmLZCCompress

public static final int cmLZCCompress
See Also:
Constant Field Values
Constructor Detail

Gzip

public Gzip()
Method Detail

getArchiveFile

public java.lang.String getArchiveFile()
The name of the zip, gzip, tar, or jar archive.

This property specifies the name of the archive to be read or written. This property is required when extracting files.

When Scan , Extract , or ExtractAll is invoked, the file specified by ArchiveFile will be opened for read. If the file does not exist, a trappable error will be generated.

When Compress is called, the file named by ArchiveFile will be written; if a file of this name already exists the Overwrite event will be fired. If ArchiveFile is set to the empty string (""), the archive will not be written to disk, and will be provided only through the Progress event.

The filename may be specified with or without a path. Paths may be relative or absolute, and should be specified in the format native to the host operating system. The filename should be specified with the appropriate extension (such as "zip"); an extension will not automatically be appended by the bean.

If the file cannot be read, or written, as appropriate, a trappable error will be generated.

Example (Creating an Archive)

 ZipControl.ArchiveFile = "c:\\test.zip"
 ZipControl.RecurseSubdirectories = true
 ZipControl.IncludeFiles("c:\\foo\\*")
 ZipControl.Compress() 

Note: an archive already open for read may be closed by setting ArchiveFile to the empty string ("").


setArchiveFile

public void setArchiveFile(java.lang.String archiveFile)
                    throws IPWorksZipException
The name of the zip, gzip, tar, or jar archive.

This property specifies the name of the archive to be read or written. This property is required when extracting files.

When Scan , Extract , or ExtractAll is invoked, the file specified by ArchiveFile will be opened for read. If the file does not exist, a trappable error will be generated.

When Compress is called, the file named by ArchiveFile will be written; if a file of this name already exists the Overwrite event will be fired. If ArchiveFile is set to the empty string (""), the archive will not be written to disk, and will be provided only through the Progress event.

The filename may be specified with or without a path. Paths may be relative or absolute, and should be specified in the format native to the host operating system. The filename should be specified with the appropriate extension (such as "zip"); an extension will not automatically be appended by the bean.

If the file cannot be read, or written, as appropriate, a trappable error will be generated.

Example (Creating an Archive)

 ZipControl.ArchiveFile = "c:\\test.zip"
 ZipControl.RecurseSubdirectories = true
 ZipControl.IncludeFiles("c:\\foo\\*")
 ZipControl.Compress() 

Note: an archive already open for read may be closed by setting ArchiveFile to the empty string ("").

IPWorksZipException

getCompressionLevel

public int getCompressionLevel()
The compression level to use.

This property specifies the level of compression to be used, between 1 and 6. Higher values will cause the bean to compress better; lower values will cause the bean to compress faster.

Storing without compression is not supported for Gzip .


setCompressionLevel

public void setCompressionLevel(int compressionLevel)
                         throws IPWorksZipException
The compression level to use.

This property specifies the level of compression to be used, between 1 and 6. Higher values will cause the bean to compress better; lower values will cause the bean to compress faster.

Storing without compression is not supported for Gzip .

IPWorksZipException

getCompressionMethod

public int getCompressionMethod()
The compression method for the bean to use.

By default, the component uses the Deflate compression method described in rfc 1952. When set to LZC compress method, the component will use a variation of the method described by the LZW (Lempel-Ziv-Welch) algorithm that is compatible with Unix's compress utility.


setCompressionMethod

public void setCompressionMethod(int compressionMethod)
                          throws IPWorksZipException
The compression method for the bean to use.

By default, the component uses the Deflate compression method described in rfc 1952. When set to LZC compress method, the component will use a variation of the method described by the LZW (Lempel-Ziv-Welch) algorithm that is compatible with Unix's compress utility.

IPWorksZipException

getExtractToPath

public java.lang.String getExtractToPath()
A base path to decompress to.

Setting the ExtractToPath property affects the operation of the Extract and ExtractAll methods. Setting this property to a nonempty string will cause all decompressed files to be written to the specified path. If pathnames are given in the values of FileDecompressedName they will be regarded as relative to ExtractToPath .

If the specified directory does not exist, it will be created when extraction is done.

ExtractToPath should always be specified in the format native to the host operating system, and with a trailing slash or backslash. If the path is specified otherwise, it will be immediately converted and stored in the converted format. For example, "/temp" would be immediately converted to "\\temp\\" on a Windows system.

Example (Extracting from an Archive)

 ZipControl.ArchiveFile = "c:\\temp.zip"
 ZipControl.ExtractToPath = "c:\\unzipped\\"
 ZipControl.ExtractAll() 


setExtractToPath

public void setExtractToPath(java.lang.String extractToPath)
                      throws IPWorksZipException
A base path to decompress to.

Setting the ExtractToPath property affects the operation of the Extract and ExtractAll methods. Setting this property to a nonempty string will cause all decompressed files to be written to the specified path. If pathnames are given in the values of FileDecompressedName they will be regarded as relative to ExtractToPath .

If the specified directory does not exist, it will be created when extraction is done.

ExtractToPath should always be specified in the format native to the host operating system, and with a trailing slash or backslash. If the path is specified otherwise, it will be immediately converted and stored in the converted format. For example, "/temp" would be immediately converted to "\\temp\\" on a Windows system.

Example (Extracting from an Archive)

 ZipControl.ArchiveFile = "c:\\temp.zip"
 ZipControl.ExtractToPath = "c:\\unzipped\\"
 ZipControl.ExtractAll() 

IPWorksZipException

getFileCompressedDate

public long getFileCompressedDate()
The date and time of the compressed file, as stored within the gzip archive.

FileCompressedDate contains the last modified date of the file, as stored within the archive. (It does not generally correspond to when the file was compressed.)

FileCompressedDate is returned in a platform-specific format. The Java Edition will return the number of milliseconds since January 1, 1970, 00:00:00. This value may be passed directly to the java.util.Date constructor to create a java.util.Date object representing this date.

The .NET Edition will return the number of ticks, or 100-nanosecond intervals, since January 1, 0001, 00:00:00. This value may be passed directly to the System.DateTime constructor to create a System.DateTime object representing this date.

Reading the value of this property will return a meaningful value only after a call to Scan or Extract . If a meaningful value is not available this property will return a value of 0.


getFileCompressedName

public java.lang.String getFileCompressedName()
Filename, as stored inside of the archive.

FileCompressedName contains the name of the compressed file, as stored within the gzip header.

This field should generally be set with a relative path or with no path at all. The exact interpretation of the path is left to the decompression software; generally, pathnames will be interpreted as relative to a base directory, and these subdirectories will be created as needed. Absolute pathnames will not be interpreted correctly by the bean, and may or may not be interpreted correctly by other decompression software.

Paths should be specified in standard (UNIX) format. They may also be specified in the format native to the host operating system, in which case they will be immediately converted.

It is not usually necessary to manually set the value of this property; it will be assigned by Compress if it is not specified, and it will always be written by a call to Scan or Extract .


setFileCompressedName

public void setFileCompressedName(java.lang.String fileCompressedName)
                           throws IPWorksZipException
Filename, as stored inside of the archive.

FileCompressedName contains the name of the compressed file, as stored within the gzip header.

This field should generally be set with a relative path or with no path at all. The exact interpretation of the path is left to the decompression software; generally, pathnames will be interpreted as relative to a base directory, and these subdirectories will be created as needed. Absolute pathnames will not be interpreted correctly by the bean, and may or may not be interpreted correctly by other decompression software.

Paths should be specified in standard (UNIX) format. They may also be specified in the format native to the host operating system, in which case they will be immediately converted.

It is not usually necessary to manually set the value of this property; it will be assigned by Compress if it is not specified, and it will always be written by a call to Scan or Extract .

IPWorksZipException

getFileDecompressedName

public java.lang.String getFileDecompressedName()
File name to decompress to, or compress from.

FileDecompressedName contains the name of the file in the archive, as stored on the file system, outside the archive.

When compressing a file, this property should be specified with a path, if necessary, to allow the file to be found by the bean. If the file cannot be found when Compress is called, a trappable error will be generated, and the archive will not be correctly written.

When decompressing files, this property may be set after calling Scan and prior to calling Extract . If this property is set to the empty string when Extract is called, Extract will automatically set this property to an appropriate value.

Note: If Scan is not called before Extract , the component will internally call the method and any value in FileDecompressedName will be overwritten.

Paths on the local file system should be specified in the format native to the host operating system. They may also be specified in standard (UNIX) format, in which case they will be immediately converted.


setFileDecompressedName

public void setFileDecompressedName(java.lang.String fileDecompressedName)
                             throws IPWorksZipException
File name to decompress to, or compress from.

FileDecompressedName contains the name of the file in the archive, as stored on the file system, outside the archive.

When compressing a file, this property should be specified with a path, if necessary, to allow the file to be found by the bean. If the file cannot be found when Compress is called, a trappable error will be generated, and the archive will not be correctly written.

When decompressing files, this property may be set after calling Scan and prior to calling Extract . If this property is set to the empty string when Extract is called, Extract will automatically set this property to an appropriate value.

Note: If Scan is not called before Extract , the component will internally call the method and any value in FileDecompressedName will be overwritten.

Paths on the local file system should be specified in the format native to the host operating system. They may also be specified in standard (UNIX) format, in which case they will be immediately converted.

IPWorksZipException

isHasMoreData

public boolean isHasMoreData()
Shows whether or not there is more data in the gzip archive.

The Gzip format described in RFC 1952 allows multiple gzipped data members to be concatenated into a single file. However, due to the nature of the algorithm it is impossible to determine the number of data members until after the entire archive has been decompressed. The HasMoreData property can be used to cycle through the archive and extract each file.

Simply set the ArchiveFile and ExtractToPath properties, then call Extract as long as the bean has available data.

Note : the bean will not update FileDecompressedName unless you call Scan or manually set FileDecompressedName on each loop before calling Extract .

Example (Extracting Multiple Files)

 ZipControl.ArchiveFile = "c:\\temp.zip"
 ZipControl.ExtractToPath = "c:\\unzipped\\"
 Do
   ZipControl.Scan()
   //here you may inspect the file name in FileDecompressedName prior to extraction
   ZipControl.Extract()
 While ZipControl.HasMoreData 


abort

public void abort()
           throws IPWorksZipException
Aborts the current operation.

Abort may be used to immediately interrupt compression or decompression. Any files partially written by the bean will be deleted.

IPWorksZipException

append

public void append()
            throws IPWorksZipException
Adds specified file to an existing archive.

The file contained in the FileDecompressedName property will be appended to the archive specified by ArchiveFile .

This method may only be used to add files to an existing archive. To add files to a new archive, Compress method should be used.

IPWorksZipException

compress

public void compress()
              throws IPWorksZipException
Creates the compressed gzip archive.

Invoking Compress creates the archive specified by ArchiveFile . When the method is called, the file specified by FileDecompressedName will be opened, and the file specified by ArchiveFile will contain the compressed output.

The filename to be stored within the archive is given by FileCompressedName . If this property is set to the empty string, it will be set to an appropriate value automatically; the bean always writes a filename in the gzip headers.

As the data is compressed the Progress event will be fired at regular intervals. This event may be used to stream out the gzip file, or to display a progress bar to the user.

IPWorksZipException

config

public java.lang.String config(java.lang.String configurationString)
                        throws IPWorksZipException
Sets or retrieves a configuration setting.

Config is a generic method available in every bean. It is used to set and retrieve configuration settings for the bean.

Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the bean, access to these internal properties is provided through the Config method.

To set a configuration setting named PROPERTY , you must call Config("PROPERTY=VALUE") , where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).

To read (query) the value of a configuration setting, you must call Config("PROPERTY") . The value will be returned as a string.

The bean accepts one or more of the following configuration settings . Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the bean, access to these internal properties is provided through the Config method.

Gzip Configuration Settings

CloseStreamAfterCompress
If true, the component will close the output stream after compression
This property is true by default. Therefore, by default, the output stream will be closed after compression is completed. In order to keep streams open after the compression completes, you must set this config to false.
FileComment
Holds the comment associated with the archive
When compressing this may be set to include a comment in the archive. This will also hold the comment associated with an archive after calling Scan .
WriteToProgressEvent
Whether or not to write data to the Progress Event
If WriteToProgressEvent is set to true, then all data produced through invocations of Extract , ExtractAll , and Compress will be written to the Progress event as well as to disk. Applications may stream out the compressed or decompressed data by trapping this event and copying the data.If WriteToProgressEvent is set to false, the data will not be streamed out, and the Data parameter of the Progress event will contain null.

By default, this config is set to false.

IPWorksZipException

extract

public void extract()
             throws IPWorksZipException
Extracts the compressed file from the gzip archive.

Invoking Extract decompresses the archive specified by ArchiveFile . The compressed file will be extracted, and written to disk. Also, FileCompressedName will be set to the filename found in the archive.

If FileDecompressedName is set to a nonempty string the file will be written there. Otherwise the bean will automatically set FileDecompressedName to an appropriate value:

If a filename (i.e., FileCompressedName ) is stored in the gzip headers, this filename will be used.

Otherwise, if ArchiveFile ends in ".gz", this filename, less the ".gz" extension will be used.

If neither of these two conditions holds, ".unzipped" will be appended to ArchiveFile .

IPWorksZipException

extractAll

public void extractAll()
                throws IPWorksZipException
Extracts all files from the compressed archive.

ExtractAll extracts all files from the archive. The file(s) will be extracted to the directory specified by ExtractToPath , and given the names found in the archive or specified by FileDecompressedName .

If Scan has not been invoked when ExtractAll is called, Scan will automatically be invoked, and the FileCompressedName and FileDecompressedName properties will be set to the values found in the archive. To manually set the decompressed filenames, Scan should be invoked before setting FileDecompressedName .

The BeginFile and EndFile events will be fired before and after each file is extracted, and the Progress event will be fired as the data is extracted. If WriteToProgressEvent is set to true, the decompressed data will be streamed out through the Progress event.

Example (Extracting from an Archive)

 ZipControl.ArchiveFile = "c:\\temp.zip"
 ZipControl.ExtractToPath = "c:\\unzipped\\"
 ZipControl.ExtractAll() 

IPWorksZipException

scan

public void scan(javax.servlet.http.HttpServletRequest request)
          throws IPWorksZipException
Scans the compressed archive.

This method will scan the gzip archive specified by ArchiveFile . The archive will be read, the header will be checked, and the stored filename will be written to FileCompressedName .

Unlike in the Zip , Tar , and Jar beans, it is never necessary to invoke this method, and it will not be automatically invoked by Extract . Suggested uses for this method would be to check that the file is a gzip file, or to determine an appropriate value for FileDecompressedName .

IPWorksZipException

setArchiveInputStream

public void setArchiveInputStream(java.io.InputStream archiveStream)
                           throws IPWorksZipException
The stream to read the zip, tar, jar, or gzip archive from.

This method should be set when the archive is to be read from a stream when Extract is called.

By default, and when this is set to null, the bean will read from the file specified by ArchiveFile . However, when this is a valid stream, the data will be read from the stream.

IPWorksZipException

setArchiveOutputStream

public void setArchiveOutputStream(java.io.OutputStream archiveStream)
                            throws IPWorksZipException
The stream to write the zip, tar, jar, or gzip archive to.

This method should be set when the archive is to be written to a stream when Compress is called.

By default, and when this is set to null, the bean will write to the file specified by ArchiveFile . However, when this is a valid stream, the data will be written to the stream.

IPWorksZipException

setFileInputStream

public void setFileInputStream(java.io.InputStream archiveStream)
                        throws IPWorksZipException
The input stream to read the decompressed data from.

When this method is set to a valid stream, the bean will read in the data from the stream as the current file instead of reading from the file contained in the FileDecompressedName property.

IPWorksZipException

addGzipEventListener

public void addGzipEventListener(ipworkszip.GzipEventListener l)
                          throws java.util.TooManyListenersException
java.util.TooManyListenersException

removeGzipEventListener

public void removeGzipEventListener(ipworkszip.GzipEventListener l)

IP*Works! ZIP V8

Copyright (c) 2009 /n software inc. - All rights reserved.