我们正在从当前的构建系统(这是一个混乱的系统)转移到一个使用Ant和Ivy的系统。我正在清理所有的构建文件,并找到jar依赖项。我认为如果我能稍微自动化一下,可能会更容易一些,方法是遍历签入项目的JAR,找到它们包含的类,然后将这些类与Java代码中的各种import
语句进行匹配。
我以前使用过archive::tar
,但是archive::zip
不是标准的Perl模块。(我担心有人会尝试我的剧本,半夜打电话告诉我它不起作用。)
我能够成功地打开jar并创建一个对象:
my $zip_obj = IO::Uncompress::AnyUncompress->new ( $zip_file );
现在,我想看看里面的内容。根据文件:
用法为
$hdr = $z->getHeaderInfo();
@hdrs = $z->getHeaderInfo();
#! /usr/bin/env perl
use 5.12.0;
use warnings;
use IO::Uncompress::AnyUncompress;
use Data::Dumper;
my $obj = IO::Uncompress::AnyUncompress->new("testng.jar")
or die qq(You're an utter failure);
say qq(Dump of \$obj = ) . Dumper $obj;
my @header2 = $obj->getHeaderInfo;
say qq(Dump of \$header = ) . Dumper $headers->[0];
Dump of $obj = $VAR1 = bless( \*Symbol::GEN0, 'IO::Uncompress::Unzip' );
Dump of $header = $VAR1 = {
'UncompressedLength' => 0,
'Zip64' => 0,
'MethodName' => 'Stored',
'Stream' => 0,
'Time' => 1181224440,
'MethodID' => 0,
'CRC32' => 0,
'HeaderLength' => 43,
'ExtraFieldRaw' => '¦- ',
'ExtraField' => [
[
'¦-',
''
]
],
'FingerprintLength' => 4,
'Type' => 'zip',
'TrailerLength' => 0,
'CompressedLength' => 0,
'Name' => 'META-INF/',
'Header' => 'PK
+N¦6 META-INF/¦- '
};
否则,我将不得不使用archive::zip
,并让人们知道他们必须从CPAN下载并在其系统上安装它。
归档中的文件被压缩在不同的数据流中,因此您需要遍历数据流以获得单个文件。
use strict;
use warnings;
use IO::Uncompress::Unzip qw(unzip $UnzipError);
my $zipfile = 'zipfile.zip';
my $u = new IO::Uncompress::Unzip $zipfile
or die "Cannot open $zipfile: $UnzipError";
die "Zipfile has no members"
if ! defined $u->getHeaderInfo;
for (my $status = 1; $status > 0; $status = $u->nextStream) {
my $name = $u->getHeaderInfo->{Name};
warn "Processing member $name\n" ;
if ($name =~ /\/$/) {
mkdir $name;
}
else {
unzip $zipfile => $name, Name => $name
or die "unzip failed: $UnzipError\n";
}
}
问题内容: 我必须使用SFTP从ZIP存档(只有一个文件,我知道它的名称)中获取文件内容。我唯一拥有的是ZIP的。大多数示例说明如何使用以下语句获取内容: 但是正如我所说,我的本地计算机上没有ZIP文件,也不想下载它。是够看了? UPD: 这是我的方法: 问题答案: 好吧,我已经做到了: 它可以帮助我阅读ZIP的内容而无需写入另一个文件。
我必须使用SFTP从ZIP存档(只有一个文件,我知道它的名称)获取文件内容。我唯一拥有的是ZIP的InputStream。大多数示例显示了如何使用此语句获取内容: 但正如我所说,我的本地机器上没有ZIP文件,我不想下载它。输入流是否足以读取? UPD:我就是这样做的:
我试图创建一个简单的java程序,从zip文件中读取并提取文件内容。Zip文件包含3个文件(txt、pdf、docx)。我需要阅读所有这些文件的内容,为此我正在使用ApacheTika。 有人能帮我实现这个功能吗。到目前为止,我已经试过了,但没有成功 代码片段
问题内容: 我有一个zip存档,其中包含一堆纯文本文件。我想解析每个文本文件的数据。到目前为止,这是我写的内容: 我需要一个RandomAccessFile来做到这一点吗?我在拥有ZipInputStream的地方迷路了。 问题答案: 不,您不需要。首先获取此zip文件条目的数据: 然后将其包装为(从二进制解码为文本)和a (一次读取一行): 然后像往常一样从中读取行。像往常一样将所有适当的位包装
我一直在尝试读取ZIP存档中的PHP文件。我编写了以下代码,它可以读取文本文档和回显而没有错误,但当我用PHP文件测试时,什么都没有出现。那么我可以做些什么来读取PHP文件而不提取呢? 提前感谢!
问题内容: 我的情况是我有一个包含一些文件(txt,png,…)的zip文件,我想直接按它们的名称读取它,我已经测试了以下代码,但没有结果(NullPointerExcepion): resources 是一个包, zipfile 是一个zip文件。 问题答案: 如果您可以确定您的zip文件永远不会打包在另一个jar中,则可以使用以下方法: 要么: 否则,您的选择是: 使用ZipInputStre
我有一个zip文件(在一个jar文件中),我想读取init。我知道我可以使用getResourceAsStream(…)轻松读取txt文件,避免“URI不分层”错误。但现在确定我该如何为zip文件做到这一点。 下面是我的代码,但当我将代码导出到runnable jar并运行它时,它会抛出“URI非层次错误”。
本文向大家介绍Python3读取zip文件信息的方法,包括了Python3读取zip文件信息的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python3读取zip文件信息的方法。分享给大家供大家参考。具体实现方法如下: 该程序接受一个字符串,其内容是一个zip文件,需要读取这个zip文件中的信息 希望本文所述对大家的Python3程序设计有所帮助。