Это происходит потому, что ваш код уже прочитал все четыре байта a
:
a.readBytes(byteArray);
В этот момент индекс чтения a
находится за концом данных, поэтому ни один из его байтов не копируется.
Размещение кода для копирования буфера перед чтением устраняет проблему:
System.out.println(Arrays.toString(
Unpooled.copiedBuffer(a, b).array()
));
byte[] byteArray = new byte[4];
a.readBytes(byteArray);
System.out.println(Arrays.toString(ArrayUtils.addAll(byteArray, b.array())));
В качестве альтернативы вы можете вызвать a.resetReaderIndex()
после readBytes
, чтобы "перемотать" буфер обратно в начало.