我需要测试我正在编写的程序是否正确解析gzip标头,并且包括读取FEXTRA,FNAME和FCOMMENT字段。然而,似乎gzip
不支持使用FEXTRA和FCOMMENT字段创建存档 - 仅限FNAME。是否有现成的工具可以完成这三种工作?
答案 0 :(得分:2)
Perl模块this answer可选择让您设置您感兴趣的三个字段。(公平披露:我是该模块的作者)
以下是一些示例代码,将 FNAME 设置为"文件名", FCOMMENT 为"这是评论"并创建一个 FEXTRA 字段,其中包含ID为#34; ab"的单个子字段。和价值" cde"。
use IO::Compress::Gzip qw(gzip $GzipError);
gzip \"payload" => "/tmp/test.gz",
Name => "filename",
Comment => "This is a comment",
ExtraField => [ "ab" => "cde"]
or die "Cannot create gzip file: $GzipError" ;
这是它创建的文件的hexdump。
00000000 1f 8b 08 1c cb 3b 3a 5a 00 03 07 00 61 62 03 00 |.....;:Z....ab..|
00000010 63 64 65 66 69 6c 65 6e 61 6d 65 00 54 68 69 73 |cdefilename.This|
00000020 20 69 73 20 61 20 63 6f 6d 6d 65 6e 74 00 2b 48 | is a comment.+H|
00000030 ac cc c9 4f 4c 01 00 15 6a 2c 42 07 00 00 00 |...OL...j,B....|
0000003f