|
IP*Works! ZIP V8 | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Object | +--ipworkszip.Gzip
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 |
public static final int cmDeflate
public static final int cmLZCCompress
| Constructor Detail |
public Gzip()
| Method Detail |
public java.lang.String getArchiveFile()
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 ("").
public void setArchiveFile(java.lang.String archiveFile)
throws IPWorksZipException
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 ("").
IPWorksZipExceptionpublic int getCompressionLevel()
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 .
public void setCompressionLevel(int compressionLevel)
throws IPWorksZipException
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 .
IPWorksZipExceptionpublic int getCompressionMethod()
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.
public void setCompressionMethod(int compressionMethod)
throws IPWorksZipException
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.
IPWorksZipExceptionpublic java.lang.String getExtractToPath()
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()
public void setExtractToPath(java.lang.String extractToPath)
throws IPWorksZipException
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()
IPWorksZipExceptionpublic long getFileCompressedDate()
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 and other editions 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.
public java.lang.String getFileCompressedName()
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 .
public void setFileCompressedName(java.lang.String fileCompressedName)
throws IPWorksZipException
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 .
IPWorksZipExceptionpublic java.lang.String getFileDecompressedName()
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.
public void setFileDecompressedName(java.lang.String fileDecompressedName)
throws IPWorksZipException
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.
IPWorksZipExceptionpublic boolean isHasMoreData()
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
public void abort()
throws IPWorksZipException
Abort may be used to immediately interrupt compression or decompression. Any files partially
written by the bean will be deleted.
IPWorksZipException
public void append()
throws IPWorksZipException
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
public void compress()
throws IPWorksZipException
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
public java.lang.String config(java.lang.String configurationString)
throws IPWorksZipException
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.
Scan .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
public void extract()
throws IPWorksZipException
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
public void extractAll()
throws IPWorksZipException
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
public void scan(javax.servlet.http.HttpServletRequest request)
throws IPWorksZipException
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
public void setArchiveInputStream(java.io.InputStream archiveStream)
throws IPWorksZipException
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
public void setArchiveOutputStream(java.io.OutputStream archiveStream)
throws IPWorksZipException
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
public void setFileInputStream(java.io.InputStream archiveStream)
throws IPWorksZipException
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
public void addGzipEventListener(ipworkszip.GzipEventListener l)
throws java.util.TooManyListenersException
java.util.TooManyListenersExceptionpublic void removeGzipEventListener(ipworkszip.GzipEventListener l)
|
IP*Works! ZIP V8 | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||