从原始磁盘映像读取文件(2352字节/扇区)



几个月前我已经问过类似的问题,但当然我的更新中使用的解决方案并不好,因为我不知道在哪个偏移开始我想要的文件,该代码读取整个文件,直到它找到想要的字符串,这是不方便的。这就是为什么我搜索了一个用Java编码的ISO9660文件阅读器,我遇到了这个项目,它可以完美地读取ISO9660文件,但是有一些文件格式,如binimg,我希望能够打开。

不幸的是,该代码不起作用,因为它期望ISO9660标头x01CD001x01位于前缀偏移量(32768,在前16个扇区之后,保留用于其他目的),如标准此处和此处所定义的:

7。前16个扇区为空

前16个扇区(扇区号0到15,包括在内)只包含0。ISO9660没有定义这些扇区的内容,但是对于DOS来说,它们显然总是写为零。它们显然是为那些可以从CD-ROM引导的系统保留的。

在我的情况下,我有imgbin磁盘映像,在第18扇区结束后,x01CD001x01头的偏移量为37656,792字节。这会使代码抛出一个错误。

既然有软件可以读取binimg文件的内容,而不需要cueccd文件,那么在这种情况下,头字段的规则是什么?这是标准的吗?还是他们残忍地通过字节搜索头?如果它是一个标准,我在哪里可以找到任何类型的文档/实现?

UPDATE:我发现这些文件有一个不同的扇区大小:2352字节/扇区,因为它们是CD-R的原始副本。

由于我没有发现任何类似的东西,也没有人给出答案,我自己编写了一个解决方案,你可以在这里找到。

这是一个能够从符合ISO9660格式的磁盘映像中读取文件的库。它同时支持2048和2352字节每个扇区图像

最新更新