现在的位置: 首页 > 算法 > 正文

怎样用Perl动态建立ZIP压缩文件

2020年05月22日 算法 ⁄ 共 1976字 ⁄ 字号 评论关闭

  Perl提供大量处理不同文件格式的内置函数和外来模块。特别是,它可以通过Archive::Zip模块,动态建立和阅读ZIP压缩文件,而不必依赖外来工具和实用工具。下面学步园小编来讲解下怎样用Perl动态建立ZIP压缩文件?

  怎样用Perl动态建立ZIP压缩文件

  首先,在Perl提示符下运行以下命令下载并安装该模块(如果你还没有安装它):

  perl>perl-MCPAN-e"installArchive::Zip"

  注意,Archive::Zip模块依靠zlib库运行,因此在安装过程中,系统可能要求你下载并安装这个库。

  建立ZIP压缩文件

  首先我们看一个简单的例子。动态建立一个包含几个其它文件的ZIP压缩文件。输入(或复制)如列表A所示的脚本:

  列表A

  #!/bin/perl

  useArchive::Zip;#imports

  $obj=Archive::Zip->new();#newinstance

  @files=('mystuff/ad.gif',

  'mystuff/alcon.doc',

  'mystuff/alcon.xls');#filestostore

  foreach$file(@files){

  $obj->addFile($file);#addfiles

  }

  if($obj->writeToFileNamed('dummy.zip')!=AZ_OK){#writetodisk

  print"Errorinarchivecreation!";

  }else{

  print"Archivecreatedsuccessfully!";

  }

  怎样用Perl动态建立ZIP压缩文件

  这段脚本相当简单,但值得仔细看一看。第一步是输入Archive::Zip模块,并初始化Archive::Zip对象的一个实例。接下来,将所有文件清单以及它们在磁盘中的位置进行压缩,保存为一个Perl数组。要记住的是,脚本(准确地说,运行脚本的用户)必须拥有访问这些磁盘位置的许可,否则建立压缩文件的过程就会失败。

  然后,用foreach()循环遍历这个数组,用对象的addFile()方法在压缩文件中增加列出的文件。一旦循环完成,则通过调用writeToFileNamed()方法把最终的压缩文件写入磁盘,writeToFileNamed()方法接受所建立的ZIP文件的完整路径和名称。记住,脚本必须拥有向指定的磁盘位置写入文件的许可;否则,writeToFileNamed()方法将会失败,因而不能建立压缩文件。

  特别要注意调用writeToFileNamed():方法的返回值。如果文件被正确写入,Archive::Zip返回一个AZ_OK值,在往后操作前系统会检查这个值。之后在这个文件中你还会看到这个返回值。

  要应用上面的脚本实例,请修改@files数组的内容以反映你的当地系统配置,并试图在命令提示符或浏览器中执行它。如果一切运行正常,这段脚本应该会找到并将所有文件读入一个叫做dummy.zip的文件中。

  查看ZIP压缩文件内容

  如何查看一个现有的压缩文件呢?Archive::Zip带有一个read()方法,可以阅读一个压缩文件的内容,并可访问与单个文件有关的详细信息。列表B是它的一个应用实例:

  列表B

  #!/bin/perl

  useArchive::Zip;#imports

  $obj=Archive::Zip->new();#newinstance

  $status=$obj->read("dummy.zip");#readfilecontents

  if($status!=AZ_OK){

  die('Errorinfile!');

  }else{

  foreach$member($obj->members()){#printfileinformation

  print$member->fileName(),",",$member->uncompressedSize(),":",$member->compressedSize(),"n";

  }

  }

  这里,read()方法用于阅读ZIP压缩文件并获得与其内容有关的信息。然后,调用members()方法返回一个结构化对象数组,每个数组元素代表压缩文件中的一个单独文件。通常来说,数组中的每个对象包含相应文件的名称信息、它的许可模式、状态、压缩类型、大小以及最后一次修改时间。我们可以用一个循环方便地提供这些信息,并对它们重新格式化,使它更具可读性,如上面的列表B所示。

  以上就是关于“怎样用Perl动态建立ZIP压缩文件”的内容,希望对大家有用。更多资讯请关注学步园。学步园,您学习IT技术的优质平台!

抱歉!评论已关闭.