我有一个zip文件,例如"test.zip",其中又包含两个zip文件——a.zip和B.zip。我只想提取a.zip的内容,不动B.zip。
我确实尝试了下面的代码片段,但还没有找到运气-
<unzip src="test.zip" dest="test_dir">
<fileset dir="test_dir">
<include name="A.zip"/>
<exclude name="B.zip"/>
</fileset>
</unzip>
请说明如何实现这一目标。
从解压缩任务的文档:
Unjar/Unwar/Unzip只支持基于文件系统的资源集合,包括文件集、文件列表、路径和文件。
这意味着您必须在文件系统的某个位置拥有a.zip的物理副本。
所以,除了分两步做之外,真的别无选择:
<tempfile property="a" suffix=".zip"/>
<copy tofile="${a}">
<zipentry zipfile="test.zip" name="A.zip"/>
</copy>
<unzip src="${a}" dest="test_dir"/>
<delete file="${a}"/>
模式集 用于选择要从存档中提取的文件。如果未使用图案集,则提取所有文件。
FileSets 可用于选择要执行取消存档的存档文件。
试试这个:
<unzip src="test.zip" dest="test_dir">
<patternset>
<include name="A.zip"/>
</patternset>
<fileset dir="test_dir">
<include name="A.zip"/>
</fileset>
</unzip>