Here you can find the source of getArray(ByteBuffer buffer)
public static byte[] getArray(ByteBuffer buffer)
//package com.java2s; //License from project: Apache License import java.nio.ByteBuffer; import java.util.Arrays; public class Main { /**//from w w w .ja va 2 s.c o m * You should almost never use this. Instead, use the write* methods to avoid copies. */ public static byte[] getArray(ByteBuffer buffer) { int length = buffer.remaining(); if (buffer.hasArray()) { int boff = buffer.arrayOffset() + buffer.position(); if (boff == 0 && length == buffer.array().length) return buffer.array(); else return Arrays.copyOfRange(buffer.array(), boff, boff + length); } // else, DirectByteBuffer.get() is the fastest route byte[] bytes = new byte[length]; buffer.duplicate().get(bytes); return bytes; } }