file - 找到 gzip 开头和结尾?

标签 file gzip archive

我有一些文件,有一些随机字节和多个 gzip 文件。如何在某个文件中找到 gzip 流的开头和结尾? gzip 流之间有许多随机字节。所以,基本上我需要找到任何 gzip 文件并从那里获取它。

最佳答案

阅读 RFC 1952 - GZIP :

每个 GZIP 文件只是一堆数据 block (称为成员),每个包含的文件对应一个数据 block 。

每个成员都以以下字节开头:

  • 0x1F (ID1)
  • 0x8B (ID2)
  • 压缩方法。 0x08 表示 DEFLATEd 文件。 0-7是保留值。
  • 旗帜。 前三位被保留并且必须为零
  • (4 个字节)上次修改时间。可以设置为 0。
  • 额外标志,由压缩方法定义。
  • 操作系统,实际上就是文件系统。 0=FAT、3=UNIX、11=NTFS

成员的结尾不被分隔。你必须实际走动整个成员。请注意,连接多个有效的 GZIP 文件会创建一个有效的 GZIP 文件。另请注意,超出成员可能仍会导致成功读取该成员(除非解压缩库完全失败)。

关于file - 找到 gzip 开头和结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13112604/

相关文章:

java - 在 Java 中读取大型 CSV 文件

java - 在操作系统级别的一个原子操作中创建和写入文件

http - WebSocket 流量编码 (GZip)

python - 如何提高Python脚本的内存效率

linux - 如何将存档的所有对象包含在共享对象中?

ios - 如何在 Swift 中保存 [[Bool]](对 bool 数组的存档数组进行编码)

带有特定路径分隔符的 Java 的 File.toString 或 Path.toString

Bash 脚本 : Gzip an entire folder and keep files extensions same

r - 自 2020 年 5 月 20 日存档以来安装 RQDA 包时出现问题

c++ - 如何在文件中更新