用Perl动态建立ZIP压缩文件

2019-06-20 01:10:39 来源: 呼和浩特信息港

  查看ZIP压缩文件内容

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

  列表B

  #!/bin/perl

  use Archive::Zip;# imports

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

  $status = $obj-read("p");# read file contents

  if ($status != AZ_OK) {

  die('Error in file!');

  } else {

  foreach $member ($obj-members()) { # print file information

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

  }

  }

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

  以下是一个输出结果样本:

  mystuff/f, 1447:345

  mystuff/c, 200:34

  mystuff/s, 28580:21483

  …

  在现有ZIP压缩文件中插入文件

  如果你已经有一个ZIP压缩文件,只需要往其中增加一个新文件,那么操作过程就相当简单:只要调用addFile()方法,增加文件的名称和路径即可。为说明这一点,我们回到p文件,并试图给它增加一些新文件。(列表C)

  列表C

  #!/bin/perl

  use Archive::Zip;# imports

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

  $status = $obj-read('p');# read file contents

  if ($status != AZ_OK) {

  die('Error in file!');

  } else {

  @files = ('otherstuff/f',# files to add

  'otherstuff/f',

  'morestuff/d');

  foreach $file (@files) {

  $obj-addFile($file);# add files

  }

  if ($obj-overwrite() != AZ_OK) {# overwrite archive with new contents

  print "Error in archive creation!";

  } else {

  print "Archive created successfully!";

  }

  }

  在一个现有压缩文件中插入一个文件的过程与建立一个新压缩文件非常相似:首先初始化一个新的Archive::Zip对象,在其中读入原始的压缩文件,再建立一个包含增加文件清单的数组,并把这个数组提交给循环中的addFile()方法。成功添加文件后,就可以用overwrite()方法用更新后的压缩文件覆盖原始的压缩文件。

男性晚上夜尿多
男性晚上夜尿多怎么治
夜尿增多吃什么好
本文标签: