在InputStream中更改索引定位

saj*_*joo 7 java android

我有一个包含密钥的二进制文件,每个密钥后都有一个与之关联的图像.我想跳出不同的键,但找不到任何改变输入流中索引定位的方法.我已经看过这个mark()方法,但它并没有跳到不同的地方.

有人知道怎么做吗?

pol*_*nts 8

有一个long skip(long n)你可能能够使用方法:

跳过并丢弃n此输入流中的数据字节.由于skip各种原因,该方法可能最终跳过一些较小数量的字节0.这可能是由许多条件造成的; n在跳过字节之前到达文件末尾只有一种可能性.返回跳过的实际字节数.如果n是否定的,则不跳过任何字节.

如文档所述,您无法保证n将跳过字节,因此请始终双重检查返回的值.请注意,这不允许您"向后跳",但如果必须markSupported(),则可以reset()先进行,然后 skip转到较早的位置.


其他选择

您也可以使用java.io.RandomAccessFile,顾名思义,允许随机访问其seek(long pos)方法.

你提到的图像,因此,如果您正在使用Java高级图像处理,另一种可能的选择是com.sun.media.jai.codec.FileSeekableStream,这是一个SeekableStream是需要从它的输入FileRandomAccessFile.请注意,此类不是JAI API的已提交部分.它可能会在未来的JAI版本中被删除或更改.