跳转到二进制文件中的特定位置

时间:2010-09-02 06:41:22

标签: java android file-io

我有一个二进制文件,其中包含image.i必须跳转到文件中的不同位置才能读取图像文件。到目前为止,我正在使用标记和重置方法,但这些并没有像我想要的那样帮助我。 请有人帮助我,我真的很感激。我正在使用输入流来阅读文件。

3 个答案:

答案 0 :(得分:4)

您可以使用java.io.RandomAccessFile执行此操作。方法seek(long)getFilePointer()将有助于跳转到文件中的不同偏移量并返回原始偏移量:

RandomAccessFile f = new RandomAccessFile("/my/image/file", "rw");

// read some data.

long positionToJump = 10L;

long origPos = f.getFilePointer(); // store the original position

f.seek(positionToJump);
// now you are at position 10, start reading from here.

// go back to original position
f.seek(origPos);

答案 1 :(得分:2)

Android好像有RandomAccessFile,您试过吗?

答案 2 :(得分:0)

从Java 7开始,您可以使用java.nio.file.FilesSeekableByteChannel

byte[] getRandomAccessResults(Path filePath, long offset) throws IOException
{
    try (SeekableByteChannel byte_channel = java.nio.file.Files.newByteChannel(filePath, StandardOpenOption.READ))
    {
        ByteBuffer byte_buffer = ByteBuffer.allocate(128);
        byte_channel.position(offset);
        byte_channel.read(byte_buffer);
        return byte_buffer.array();
    }
}