几个月前我已经问过类似的here,但当然我的更新中使用的解决方案并不好,因为我不知道哪个偏移量启动了我想要的文件,该代码读取整个文件,直到找到想要的字符串,这是不方便的。这就是我搜索用Java编码的ISO9660文件阅读器的原因,我来到这个project,它读取了完美的ISO9660文件,但有一些文件格式,如bin
和img
,我会喜欢能够打开。
不幸的是,代码不起作用,因为它期望ISO9660标头\x01CD001\x01
处于标准{{3}定义的前缀偏移量(32768,紧接在前16个扇区之后,保留用于其他目的) }和here:
7。前十六个部门是空的
前16个扇区(扇区号0到15,包括0和15)只包含零。 ISO9660没有定义这些扇区的内容,但对于DOS,它们显然总是写为零。它们显然保留供可以从CD-ROM引导的系统使用。
在我的情况下,我有img
和bin
磁盘映像,其中\x01CD001\x01
标头位于偏移量37656,第18个扇区结束后792个字节。这使代码抛出错误。
由于有些软件能够在不需要bin
或img
文件的情况下读取cue
和ccd
文件的内容,因此对标题进行修改的规则是什么在这种情况下?它是标准还是粗暴地通过字节搜索标题?如果它是一个标准,我在哪里可以找到任何类型的文档/实现?
更新:我发现这些文件的扇区大小不同:2352字节/扇区,因为它们是CD-R的原始副本。
答案 0 :(得分:3)
由于我没有找到类似的内容,没有人给出答案,我自己编写了一个解决方案,你可以找到它here。
它是一个能够从符合ISO9660格式的磁盘映像中读取文件的库。 它每个扇区图像都支持2048和2352字节。