Как записать считанный 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);