The easiest way is to use a ByteBuffer
to wrap your original array:
final ByteBuffer buf = ByteBuffer.wrap(theOriginalArray);
buf.position(whereYouWant);
buf.put(theNewArray);
Note: above code does not check for overflows etc. If an overflow is possible, the code will have to change for something like this and the method should return the array:
final int targetLength = theNewArray.length + offset;
final boolean overflow = targetLength > theOriginalArray.length;
final ByteBuffer buf;
if (overflow) {
buf = ByteBuffer.allocate(targetLength);
buf.put(theOriginalArray);
buf.rewind();
} else
buf = ByteBuffer.wrap(theOriginalArray);
buf.position(offset);
buf.put(theNewArray);
return buf.array(); // IMPORTANT