我有一个zip文件,其中包含许多zip文件。我想检查一个内部压缩包的内容,* 而不 * 将其解压缩到文件系统。
如果我用Zip::File.foreach
覆盖外部zip文件的内容,我会得到一个Zip::Entry
,它代表我想要检查的zip文件的内容。我不知道如何做到这一点,而不提取子压缩到文件系统。
我可以在su-bzip上调用.extract("some_destination.zip")
,然后将其视为普通的顶级zip)。这是可行的,但我只是试图在单元测试中验证内容,不想向文件系统中写入不必要的内容。
边注:在任何人问“为什么”我有子拉链,或指出缺乏压缩价值这样做.这是因为苹果希望你创建一个拉链拉链,以便同时向苹果钱包添加多张门票。
1条答案
按热度按时间b4wnujal1#
一种简单的方法是在内存中读取外部zip条目的内容,然后使用
Zip::File.open_buffer
API示例化一个新的Zip
示例。在下面的示例中,为了简单起见,我们假设外部zip文件包含内部zip文件,内部zip文件包含纯文本文件:
使用流来完成相同的任务可能是可行的,但是它更容易出错(也就是说,在调试时意外地多次阅读),并且如果文件足够小(当然,没有攻击的风险),在内存中进行阅读是可以接受的。