public static void main(String[] args) {
byte[] bytes1 = "123".getBytes()
byte[] bytes2 = "567".getBytes()
ByteBuffer buffer = ByteBuffer.allocateDirect(1024)
log.info("position {}
buffer.put(bytes1)
log.info("put:123 {}
log.info("get:{}
buffer.flip()
log.info("flip......mark:{}", buffer)
log.info("get:{}
buffer.compact()
log.info("compact......mark:{}", buffer)
buffer.put(bytes2)
log.info("put:567 {}
buffer.flip()
log.info("flip......mark:{}", buffer)
log.info("get:{}
buffer.clear()
log.info("clear......mark:{}", buffer)
}
position 0; limit 1024; capacity 1024; mark java.nio.DirectByteBuffer[pos=0 lim=1024 cap=1024]
put:123 [49, 50, 51]; ......mark:java.nio.DirectByteBuffer[pos=3 lim=1024 cap=1024]
get:0; mark:java.nio.DirectByteBuffer[pos=4 lim=1024 cap=1024]
flip......mark:java.nio.DirectByteBuffer[pos=0 lim=4 cap=1024]
get:49; mark:java.nio.DirectByteBuffer[pos=1 lim=4 cap=1024]
compact......mark:java.nio.DirectByteBuffer[pos=3 lim=1024 cap=1024]
put:567 [53, 54, 55]; ......mark:java.nio.DirectByteBuffer[pos=6 lim=1024 cap=1024]
flip......mark:java.nio.DirectByteBuffer[pos=0 lim=6 cap=1024]
get:50; mark:java.nio.DirectByteBuffer[pos=1 lim=6 cap=1024]
clear......mark:java.nio.DirectByteBuffer[pos=0 lim=1024 cap=1024]
public static void main(String[] args) {
byte[] bytes1 = "123".getBytes();
byte[] bytes2 = "567".getBytes();
ByteBuffer buffer = ByteBuffer.allocateDirect(1024);
buffer.put(bytes1);
log.info("get:{}; mark:{}", buffer.get(), buffer);
buffer.flip(); //读写交替
log.info("flip......mark:{}", buffer);
log.info("get:{}; mark:{}", buffer.get(), buffer);
log.info("get:{}; mark:{}", buffer.get(), buffer);
log.info("get:{}; mark:{}", buffer.get(), buffer);
log.info("get:{}; mark:{}", buffer.get(), buffer);
// log.info("get:{}; mark:{}", buffer.get(), buffer); // Exception in thread "main" java.nio.BufferUnderflowException
buffer.compact();
log.info("compact......mark:{}", buffer);
buffer.put(bytes2);
log.info("put:567 {}; ......mark:{}", bytes2, buffer);
buffer.flip(); //读写交替
log.info("flip......mark:{}", buffer);
log.info("get:{}; mark:{}", buffer.get(), buffer);
buffer.clear();
log.info("clear......mark:{}", buffer);
}
get:0; mark:java.nio.DirectByteBuffer[pos=4 lim=1024 cap=1024]
flip......mark:java.nio.DirectByteBuffer[pos=0 lim=4 cap=1024]
get:49; mark:java.nio.DirectByteBuffer[pos=1 lim=4 cap=1024]
get:50; mark:java.nio.DirectByteBuffer[pos=2 lim=4 cap=1024]
get:51; mark:java.nio.DirectByteBuffer[pos=3 lim=4 cap=1024]
get:0; mark:java.nio.DirectByteBuffer[pos=4 lim=4 cap=1024]
compact......mark:java.nio.DirectByteBuffer[pos=0 lim=1024 cap=1024]
put:567 [53, 54, 55]; ......mark:java.nio.DirectByteBuffer[pos=3 lim=1024 cap=1024]
flip......mark:java.nio.DirectByteBuffer[pos=0 lim=3 cap=1024]
get:53; mark:java.nio.DirectByteBuffer[pos=1 lim=3 cap=1024]
clear......mark:java.nio.DirectByteBuffer[pos=0 lim=1024 cap=1024]