zip.html

来自「perl教程」· HTML 代码 · 共 1,222 行 · 第 1/5 页

HTML
1,222
字号
<?xml version="1.0" ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<!-- saved from url=(0017)http://localhost/ -->
<script language="JavaScript" src="../../displayToc.js"></script>
<script language="JavaScript" src="../../tocParas.js"></script>
<script language="JavaScript" src="../../tocTab.js"></script>
<link rel="stylesheet" type="text/css" href="../../scineplex.css">
<title>Archive::Zip - Provide an interface to ZIP archive files.</title>
<link rel="stylesheet" href="../../Active.css" type="text/css" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:" />
</head>

<body>

<script>writelinks('__top__',2);</script>
<h1><a>Archive::Zip - Provide an interface to ZIP archive files.</a></h1>
<p><a name="__index__"></a></p>

<!-- INDEX BEGIN -->

<ul>

	<li><a href="#name">NAME</a></li>
	<li><a href="#synopsis">SYNOPSIS</a></li>
	<li><a href="#description">DESCRIPTION</a></li>
	<ul>

		<li><a href="#file_naming">File Naming</a></li>
		<li><a href="#archive__zip_object_model">Archive::Zip Object Model</a></li>
		<li><a href="#overview">Overview</a></li>
		<li><a href="#inheritance">Inheritance</a></li>
	</ul>

	<li><a href="#exports">EXPORTS</a></li>
	<li><a href="#error_codes">ERROR CODES</a></li>
	<ul>

		<li><a href="#compression">Compression</a></li>
		<li><a href="#compression_levels">Compression Levels</a></li>
	</ul>

	<li><a href="#archive__zip_methods">Archive::Zip Methods</a></li>
	<ul>

		<li><a href="#constructor">Constructor</a></li>
		<li><a href="#zip_archive_utility_methods">Zip Archive Utility Methods</a></li>
		<li><a href="#zip_archive_accessors">Zip Archive Accessors</a></li>
		<li><a href="#zip_archive_member_operations">Zip Archive Member Operations</a></li>
		<li><a href="#zip_archive_i_o_operations">Zip Archive I/O operations</a></li>
		<li><a href="#zip_archive_tree_operations">Zip Archive Tree operations</a></li>
	</ul>

	<li><a href="#member_operations">MEMBER OPERATIONS</a></li>
	<ul>

		<li><a href="#member_class_methods">Member Class Methods</a></li>
		<li><a href="#member_simple_accessors">Member Simple accessors</a></li>
		<li><a href="#lowlevel_member_data_reading">Low-level member data reading</a></li>
	</ul>

	<li><a href="#archive__zip__filemember_methods">Archive::Zip::FileMember methods</a></li>
	<li><a href="#archive__zip__zipfilemember_methods">Archive::Zip::ZipFileMember methods</a></li>
	<li><a href="#required_modules">REQUIRED MODULES</a></li>
	<li><a href="#bugs_and_caveats">BUGS AND CAVEATS</a></li>
	<ul>

		<li><a href="#when_not_to_use_archive__zip">When not to use Archive::Zip</a></li>
		<li><a href="#try_to_avoid_io__scalar">Try to avoid IO::Scalar</a></li>
	</ul>

	<li><a href="#to_do">TO DO</a></li>
	<li><a href="#support">SUPPORT</a></li>
	<li><a href="#author">AUTHOR</a></li>
	<li><a href="#copyright">COPYRIGHT</a></li>
	<li><a href="#see_also">SEE ALSO</a></li>
</ul>
<!-- INDEX END -->

<hr />
<p>
</p>
<hr />
<h1><a name="name">NAME</a></h1>
<p>Archive::Zip - Provide an interface to ZIP archive files.</p>
<p>
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<pre>
   <span class="comment"># Create a Zip file</span>
   <span class="keyword">use</span> <span class="variable">Archive::Zip</span> <span class="string">qw( :ERROR_CODES :CONSTANTS )</span><span class="operator">;</span>
   <span class="keyword">my</span> <span class="variable">$zip</span> <span class="operator">=</span> <span class="variable">Archive::Zip</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">();</span>
   
   <span class="comment"># Add a directory</span>
   <span class="keyword">my</span> <span class="variable">$dir_member</span> <span class="operator">=</span> <span class="variable">$zip</span><span class="operator">-&gt;</span><span class="variable">addDirectory</span><span class="operator">(</span> <span class="string">'dirname/'</span> <span class="operator">);</span>
   
   <span class="comment"># Add a file from a string with compression</span>
   <span class="keyword">my</span> <span class="variable">$string_member</span> <span class="operator">=</span> <span class="variable">$zip</span><span class="operator">-&gt;</span><span class="variable">addString</span><span class="operator">(</span> <span class="string">'This is a test'</span><span class="operator">,</span> <span class="string">'stringMember.txt'</span> <span class="operator">);</span>
   <span class="variable">$string_member</span><span class="operator">-&gt;</span><span class="variable">desiredCompressionMethod</span><span class="operator">(</span> <span class="variable">COMPRESSION_DEFLATED</span> <span class="operator">);</span>
   
   <span class="comment"># Add a file from disk</span>
   <span class="keyword">my</span> <span class="variable">$file_member</span> <span class="operator">=</span> <span class="variable">$zip</span><span class="operator">-&gt;</span><span class="variable">addFile</span><span class="operator">(</span> <span class="string">'xyz.pl'</span><span class="operator">,</span> <span class="string">'AnotherName.pl'</span> <span class="operator">);</span>
   
   <span class="comment"># Save the Zip file</span>
   <span class="keyword">unless</span> <span class="operator">(</span> <span class="variable">$zip</span><span class="operator">-&gt;</span><span class="variable">writeToFileNamed</span><span class="operator">(</span><span class="string">'someZip.zip'</span><span class="operator">)</span> <span class="operator">==</span> <span class="variable">AZ_OK</span> <span class="operator">)</span> <span class="operator">{</span>
       <span class="keyword">die</span> <span class="string">'write error'</span><span class="operator">;</span>
   <span class="operator">}</span>
   
   <span class="comment"># Read a Zip file</span>
   <span class="keyword">my</span> <span class="variable">$somezip</span> <span class="operator">=</span> <span class="variable">Archive::Zip</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">();</span>
   <span class="keyword">unless</span> <span class="operator">(</span> <span class="variable">$somezip</span><span class="operator">-&gt;</span><span class="keyword">read</span><span class="operator">(</span> <span class="string">'someZip.zip'</span> <span class="operator">)</span> <span class="operator">==</span> <span class="variable">AZ_OK</span> <span class="operator">)</span> <span class="operator">{</span>
       <span class="keyword">die</span> <span class="string">'read error'</span><span class="operator">;</span>
   <span class="operator">}</span>
   
   <span class="comment"># Change the compression type for a file in the Zip</span>
   <span class="keyword">my</span> <span class="variable">$member</span> <span class="operator">=</span> <span class="variable">$somezip</span><span class="operator">-&gt;</span><span class="variable">memberNamed</span><span class="operator">(</span> <span class="string">'stringMember.txt'</span> <span class="operator">);</span>
   <span class="variable">$member</span><span class="operator">-&gt;</span><span class="variable">desiredCompressionMethod</span><span class="operator">(</span> <span class="variable">COMPRESSION_STORED</span> <span class="operator">);</span>
   <span class="keyword">unless</span> <span class="operator">(</span> <span class="variable">$zip</span><span class="operator">-&gt;</span><span class="variable">writeToFileNamed</span><span class="operator">(</span> <span class="string">'someOtherZip.zip'</span> <span class="operator">)</span> <span class="operator">==</span> <span class="variable">AZ_OK</span> <span class="operator">)</span> <span class="operator">{</span>
       <span class="keyword">die</span> <span class="string">'write error'</span><span class="operator">;</span>
   <span class="operator">}</span>
</pre>
<p>
</p>
<hr />
<h1><a name="description">DESCRIPTION</a></h1>
<p>The Archive::Zip module allows a Perl program to create, manipulate, read,
and write Zip archive files.</p>
<p>Zip archives can be created, or you can read from existing zip files.</p>
<p>Once created, they can be written to files, streams, or strings. Members
can be added, removed, extracted, replaced, rearranged, and enumerated.
They can also be renamed or have their dates, comments, or other attributes
queried or modified. Their data can be compressed or uncompressed as needed.</p>
<p>Members can be created from members in existing Zip files, or from existing
directories, files, or strings.</p>
<p>This module uses the <a href="../../lib/Compress/Zlib.html">the Compress::Zlib manpage</a> library to read and write the
compressed streams inside the files.</p>
<p>
</p>
<h2><a name="file_naming">File Naming</a></h2>
<p>Regardless of what your local file system uses for file naming, names in a
Zip file are in Unix format (<em>forward</em> slashes (/) separating directory
names, etc.).</p>
<p><code>Archive::Zip</code> tries to be consistent with file naming conventions, and will
translate back and forth between native and Zip file names.</p>
<p>However, it can't guess which format names are in. So two rules control what
kind of file name you must pass various routines:</p>
<dl>
<dt><strong><a name="item_names_of_files_are_in_local_format_2e">Names of files are in local format.</a></strong>

<dd>
<p><code>File::Spec</code> and <code>File::Basename</code> are used for various file
operations. When you're referring to a file on your system, use its
file naming conventions.</p>
</dd>
</li>
<dt><strong><a name="item_names_of_archive_members_are_in_unix_format_2e">Names of archive members are in Unix format.</a></strong>

<dd>
<p>This applies to every method that refers to an archive member, or
provides a name for new archive members. The <code>extract()</code> methods
that can take one or two names will convert from local to zip names
if you call them with a single name.</p>
</dd>
</li>
</dl>
<p>
</p>
<h2><a name="archive__zip_object_model">Archive::Zip Object Model</a></h2>
<p>
</p>
<h2><a name="overview">Overview</a></h2>
<p>Archive::Zip::Archive objects are what you ordinarily deal with.
These maintain the structure of a zip file, without necessarily
holding data. When a zip is read from a disk file, the (possibly
compressed) data still lives in the file, not in memory. Archive
members hold information about the individual members, but not
(usually) the actual member data. When the zip is written to a
(different) file, the member data is compressed or copied as needed.
It is possible to make archive members whose data is held in a string
in memory, but this is not done when a zip file is read. Directory
members don't have any data.</p>
<p>
</p>
<h2><a name="inheritance">Inheritance</a></h2>
<pre>
  Exporter
   Archive::Zip                            Common base class, has defs.
       Archive::Zip::Archive               A Zip archive.
       Archive::Zip::Member                Abstract superclass for all members.
           Archive::Zip::StringMember      Member made from a string
           Archive::Zip::FileMember        Member made from an external file
               Archive::Zip::ZipFileMember Member that lives in a zip file
               Archive::Zip::NewFileMember Member whose data is in a file
           Archive::Zip::DirectoryMember   Member that is a directory</pre>
<p>
</p>
<hr />
<h1><a name="exports">EXPORTS</a></h1>
<dl>
<dt><strong><a name="item__3aconstants">:CONSTANTS</a></strong>

<dd>
<p>Exports the following constants:</p>
</dd>
<dd>
<p>FA_MSDOS FA_UNIX GPBF_ENCRYPTED_MASK
GPBF_DEFLATING_COMPRESSION_MASK GPBF_HAS_DATA_DESCRIPTOR_MASK
COMPRESSION_STORED COMPRESSION_DEFLATED IFA_TEXT_FILE_MASK
IFA_TEXT_FILE IFA_BINARY_FILE COMPRESSION_LEVEL_NONE
COMPRESSION_LEVEL_DEFAULT COMPRESSION_LEVEL_FASTEST
COMPRESSION_LEVEL_BEST_COMPRESSION</p>
</dd>
</li>
<dt><strong><a name="item__3amisc_constants">:MISC_CONSTANTS</a></strong>

<dd>
<p>Exports the following constants (only necessary for extending the
module):</p>
</dd>
<dd>
<p>FA_AMIGA FA_VAX_VMS FA_VM_CMS FA_ATARI_ST FA_OS2_HPFS
FA_MACINTOSH FA_Z_SYSTEM FA_CPM FA_WINDOWS_NTFS
GPBF_IMPLODING_8K_SLIDING_DICTIONARY_MASK
GPBF_IMPLODING_3_SHANNON_FANO_TREES_MASK
GPBF_IS_COMPRESSED_PATCHED_DATA_MASK COMPRESSION_SHRUNK
DEFLATING_COMPRESSION_NORMAL DEFLATING_COMPRESSION_MAXIMUM
DEFLATING_COMPRESSION_FAST DEFLATING_COMPRESSION_SUPER_FAST
COMPRESSION_REDUCED_1 COMPRESSION_REDUCED_2 COMPRESSION_REDUCED_3
COMPRESSION_REDUCED_4 COMPRESSION_IMPLODED COMPRESSION_TOKENIZED
COMPRESSION_DEFLATED_ENHANCED
COMPRESSION_PKWARE_DATA_COMPRESSION_LIBRARY_IMPLODED</p>
</dd>
</li>
<dt><strong><a name="item__3aerror_codes">:ERROR_CODES</a></strong>

<dd>
<p>Explained below. Returned from most methods.</p>
</dd>
<dd>
<p>AZ_OK AZ_STREAM_END AZ_ERROR AZ_FORMAT_ERROR AZ_IO_ERROR</p>
</dd>
</li>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?