Чтение определенных байтов из файла RandomAccessFile с использованием FileChannel: Java

#java #buffer #nio #bytebuffer #filechannel

#java #буфер #nio #bytebuffer #filechannel

Вопрос:

У меня есть RandomAccessFile и его FileChannel. То, что я пытаюсь сделать, это прочитать определенный раздел байтов из указанного файла; однако, просматривая методы чтения FileChannel, я не видел перегрузок, которые помогли бы в том, что я пытаюсь сделать, только методы, которые будут считывать все содержимое или считывать содержимое в определенную позициюв буфере, который принимает метод чтения. Есть ли метод, который мне не хватает, который поможет мне достичь моей цели чтения определенного фрагмента байтов, или мне нужно будет прочитать весь канал в буфер, а затем каким-то образом разобрать раздел?

Ответ №1:

Вы можете перейти к определенной позиции в файле, используя FileChannel#position(long) , а затем read буфер нужного размера.

Комментарии:

1. Какое чтение вы имеете в виду? Я не вижу никаких перегруженных операций чтения, указывающих размер буфера.

2. @ChrisV. Создайте байтбуфер требуемого размера. Или просто используйте RandomAccessFile.read(buffer,int,int), если у вас нет веских причин для использования канала.