Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
perl-将多个ZIP存档中的文件/成员合并为流式、单个ZIP存档输出_Perl_Streaming_Zip - Fatal编程技术网

perl-将多个ZIP存档中的文件/成员合并为流式、单个ZIP存档输出

perl-将多个ZIP存档中的文件/成员合并为流式、单个ZIP存档输出,perl,streaming,zip,Perl,Streaming,Zip,我的程序需要读取多个ZIP归档文件,并构造一个写入标准输出的ZIP输出流,最终写入网络套接字。由于输入已经压缩了ZIP文件,我正在寻找一种方法,将已经压缩的文件/输入ZIP的成员添加到流输出中(以避免不必要的解压缩和重新压缩)。至于流式输出,我需要在处理输入时写入输出,以1)避免将所有压缩数据保存在内存中,2)保持数据流动以避免下游套接字超时 Archive::Zip模块有一种机制,可以通过addMember()将成员从一个Zip存档复制到另一个存档,可能不需要解压缩。Zip还可以写入管道/套接

我的程序需要读取多个ZIP归档文件,并构造一个写入标准输出的ZIP输出流,最终写入网络套接字。由于输入已经压缩了ZIP文件,我正在寻找一种方法,将已经压缩的文件/输入ZIP的成员添加到流输出中(以避免不必要的解压缩和重新压缩)。至于流式输出,我需要在处理输入时写入输出,以1)避免将所有压缩数据保存在内存中,2)保持数据流动以避免下游套接字超时

Archive::Zip模块有一种机制,可以通过addMember()将成员从一个Zip存档复制到另一个存档,可能不需要解压缩。Zip还可以写入管道/套接字。但我找不到增量写入;整个归档文件在写入之前需要在内存(或文件)中构建,这对于我正在处理的数据来说可能太大了

IO::Compress::Zip模块的重点是生成我需要的流式输出。但是,没有明显的方法将输入ZIP归档文件中已经压缩的文件添加到输出流中

我确信使用Archive::ZIP读取ZIP是可行的,解压缩每个文件/成员,然后将它们压缩并写入STDOUT,但这将不必要地浪费周期,而且对于我需要处理的数据大小(千兆字节),可能是一个很大的负载

有什么优雅的方法可以做到这一点吗


这两个模块是否有我遗漏的功能?

我认为没有一个Perl模块用于此。但是,有一个名为
zipmerge
的实用程序可以实现这一点


它似乎是libzip发行版的一部分:

谢谢Joe Z。zipmerge似乎需要文件进行输入。在这种情况下,我试图避免编写文件,同时获得所有可用数据。