测试文件以查看其zip文件的好方法是什么?

Phi*_*ent 12 c++ compression file-io unzip

我看作是一种新的文件格式规范,规范说文件可以是基于xml的,也可以是包含xml文件和其他文件的zip文件.

两种情况下的文件扩展名都相同.我可以通过哪些方法测试文件以确定它是否需要解压缩或只是阅读?

Sim*_*ens 19

zip文件格式由PKWARE定义.您可以在此处找到他们的文件规范.

在顶部附近你会发现标题规范:

A.本地文件头:

    local file header signature     4 bytes  (0x04034b50)
    version needed to extract       2 bytes
    general purpose bit flag        2 bytes
    compression method              2 bytes
    last mod file time              2 bytes
    last mod file date              2 bytes
    crc-32                          4 bytes
    compressed size                 4 bytes
    uncompressed size               4 bytes
    file name length                2 bytes
    extra field length              2 bytes

    file name (variable size)
    extra field (variable size)
Run Code Online (Sandbox Code Playgroud)

从中您可以看到标头的前4个字节应该是文件签名,应该是十六进制值0x04034b50.文件中的字节顺序是另一种方式 - PKWARE指定"除非另有说明,否则所有值都以小端字节顺序存储.",因此如果使用十六进制编辑器查看文件,您将看到50 4b 03 04 as前4个字节.

您可以使用它来检查您的文件是否是zip文件.如果在记事本中打开文件,您会注意到前两个字节(50和4b)是ASCII字符PK.

  • 如果你的系统是little-endian,那么"文件中的字节顺序是相反的". (6认同)
  • ZIP文件格式因供应商而异.它最初由PKWARE定义,但许多其他供应商现在支持相同的压缩格式.格式在标题中具体说明了PK,因此即使其他供应商仍然会包含标题的这一部分.不同的文件格式,如arc,7z,lhz,gzip等将具有不同的规范和不同的标题,但是zip文件将始终在标题中具有此. (4认同)

Amb*_*ber 12

你可以看看文件的幻数.ZIP压缩文件列在ZIP格式维基百科页面上:PK\003\004 or PK\005\006.

  • 确实.但是,如果他们的问题只是区分两种有效的格式,那么神奇的数字就是要走的路. (2认同)