перейти на конкретное место в двоичном файле - PullRequest
2 голосов
/ 02 сентября 2010

У меня есть бинарный файл, который содержит изображение. Мне нужно перейти в разные места в файле, чтобы прочитать файл изображения. Пока что я использую методы mark и reset, но они не помогают мне так, как я хочу. Пожалуйста, кто-нибудь, помогите мне с этим, я буду очень благодарен. И я использую Input Stream, чтобы прочитать файл.

Ответы [ 3 ]

4 голосов
/ 02 сентября 2010

Вы можете использовать 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);
2 голосов
/ 02 сентября 2010

Android, кажется, имеет RandomAccessFile , вы пробовали это?

0 голосов
/ 19 октября 2017

Начиная с Java 7 вы можете использовать java.nio.file.Files и SeekableByteChannel

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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...