我有一个包含密钥的二进制文件,在每个密钥之后都有一个与之关联的图像。我想跳过不同的键,但找不到任何改变输入流中索引位置的方法。我见过mark()
方法,但它不会跳转到不同的地方。
有谁知道怎么做吗?
发布于 2010-08-13 08:57:49
您可以使用以下long skip(long n)
方法:
跳过并丢弃此输入流中的
n
字节数据。由于各种原因,skip
方法可能会跳过一些较小的字节数,可能是0
。这可能是由许多情况中的任何一种引起的;在跳过n
字节之前到达文件末尾只是一种可能性。返回跳过的实际字节数。如果n
为负数,则不跳过任何字节。
正如文档所述,您不能保证将跳过n
字节,因此请始终仔细检查返回值。请注意,这不允许您“向后跳过”,但如果它是markSupported()
,您可以先reset()
,然后skip
前进到前面的位置(如果需要)。
其他选项
您还可以使用java.io.RandomAccessFile
,顾名思义,它允许使用其seek(long pos)
方法进行随机访问。
您提到了图像,所以如果您使用的是Java Advanced Imaging,另一个可能的选择是com.sun.media.jai.codec.FileSeekableStream
,它是一个从File
或RandomAccessFile
获取输入的SeekableStream
。注意,这个类并不是JAI API的一个提交部分。它可能会在未来的JAI版本中删除或更改。
https://stackoverflow.com/questions/3474911
复制