|
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 ("").
IPWorksZipException
public 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 .
IPWorksZipException
public 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.
IPWorksZipException
public 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()
IPWorksZipException
public 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 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.
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
.
IPWorksZipException
public 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.
IPWorksZipException
public 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.TooManyListenersException
public 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 |