按特定顺序读取 .tar 个条目(C#、SharpLibZip)
Read .tar entries in a specific order (C#, SharpLibZip)
背景
在 this website 中,我找到了几个使用 SharpLibZip 阅读 .tar 实现的示例。
问题
但在我的例子中,我想确保根据条目的名称以特定顺序读取条目。有简单的方法吗?
更多详情
我的 .tar 存档包含每月数据和每日文件(file-01
、file-02
、...、file-31
)。但是,数据提供者在创建 .tar 文件时似乎没有注意,条目似乎以随机顺序到达。
您需要编写自己的 tar 解码器。由您决定是否认为这“容易”。 tar 格式非常简单。
您需要先扫描 tar 文件以找到所有 headers,保存文件名以及每个文件数据的偏移量和长度。然后你可以来回搜索任何文件的偏移量来读取它的内容。
如果 tar 文件被压缩,这将变得更加困难,例如如果它是 .tar.gz
文件,而不是 .tar
文件。
tar 格式已记录 here。
更新:
在评论中,OP 透露它实际上是一个 .tar.bz2
文件。如前所述,这需要额外的工作才能随机访问条目。除了为 tar 内容建立索引外,还需要读取整个 .bz2
文件来为压缩入口点建立索引,这些入口点不对应于文件 star 的位置t 在 tar 存档中。然后要访问一个文件,您首先会转到该文件数据的 start 之前最近的 bzip2 入口点,并从那里解压缩直到您到达然后读出该数据。
将文件重新归档并重新压缩为 zip 格式会更容易,zip 格式旨在随机访问和提取单个条目。
背景
在 this website 中,我找到了几个使用 SharpLibZip 阅读 .tar 实现的示例。
问题
但在我的例子中,我想确保根据条目的名称以特定顺序读取条目。有简单的方法吗?
更多详情
我的 .tar 存档包含每月数据和每日文件(file-01
、file-02
、...、file-31
)。但是,数据提供者在创建 .tar 文件时似乎没有注意,条目似乎以随机顺序到达。
您需要编写自己的 tar 解码器。由您决定是否认为这“容易”。 tar 格式非常简单。
您需要先扫描 tar 文件以找到所有 headers,保存文件名以及每个文件数据的偏移量和长度。然后你可以来回搜索任何文件的偏移量来读取它的内容。
如果 tar 文件被压缩,这将变得更加困难,例如如果它是 .tar.gz
文件,而不是 .tar
文件。
tar 格式已记录 here。
更新:
在评论中,OP 透露它实际上是一个 .tar.bz2
文件。如前所述,这需要额外的工作才能随机访问条目。除了为 tar 内容建立索引外,还需要读取整个 .bz2
文件来为压缩入口点建立索引,这些入口点不对应于文件 star 的位置t 在 tar 存档中。然后要访问一个文件,您首先会转到该文件数据的 start 之前最近的 bzip2 入口点,并从那里解压缩直到您到达然后读出该数据。
将文件重新归档并重新压缩为 zip 格式会更容易,zip 格式旨在随机访问和提取单个条目。