代码之家  ›  专栏  ›  技术社区  ›  David W.

Perl模块存档::zip-如何知道成员是否是文件目录?

  •  1
  • David W.  · 技术社区  · 14 年前

    一个快速的问题 Archive::Zip . 如何知道成员是目录还是文件?我需要将特定zip中的所有EAR文件移动到另一个目录。但是,有些目录还具有 .ear 后缀,我不想要那些。

    我在做:

    my @jarMembers = $zip->membersMatching('^.*\.jar');
    foreach my $member (@jarMembers) {
        my $fileName = basename($member->FileName());
        $zip->ExtractMember($member, "$zipRootDir/$fileName";
    }
    

    我想核实一下我不会拿到目录 foo.ear .

    我怀疑目录名应该以斜杠结尾,但文档中没有明确说明这一点的内容。我还注意到了特殊的archive::zip::filemember方法,但在访问它们时文档的方式并不多。就是这样吗?

    if ($member->externalFileName()) {
       print "Member is a file\n";
    } else {
       print "Member is a directory\n";
    }
    

    这会告诉我一个成员是文件还是目录,还是我的第一个代码片段就足够了?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Alnitak    14 年前

    我的Perl版本(Mac OS X 10.6.5上的5.10.0)在 Archive::Zip::Member :

     isDirectory()
         Returns true if I am a directory.