Как записать считанный IntBuffer через BufferedOutputStream

Есть IntBuffer, полученный следующим образом:

IntBuffer ib = null;
public void reading() {
        try {
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream("map.bin"));
            ib = ByteBuffer.wrap(bis.readAllBytes()).asIntBuffer();
            bis.close();
        } catch (IOException e) {
        }
    }

Чтобы сохранить его через BufferedOutputStream, необходимо как-то перейти к массиву byte[], я хотел сделать так:

ByteBuffer bb = ByteBuffer.allocate(ib.capacity()*4);
bb.asIntBuffer().put(ib.array());
bos.write(bb.array());

И этот код работает, если где-то прежде произойдёт allocate() (насколько я понял), иначе получается java.lang.UnsupportedOperationException. Но allocate() создаёт новый экземпляр IntBuffer. Можно ли как-то сохранить IntBuffer, не используя цикл?


Ответы (1 шт):

Автор решения: woesss

Зачем извращаться с IntBuffer, когда у вас есть массив байтов - просто сохраните ссылку и пишите его.

IntBuffer ib = null;
byte[] ba = null;

public void reading() {
        try {
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream("map.bin"));
            ba = bis.readAllBytes();
            ib = ByteBuffer.wrap(ba).asIntBuffer();
            bis.close();
        } catch (IOException e) {
        }
    }

bos.write(ba);
→ Ссылка