Java - Read-Only Buffers

Introduction

A buffer can be read-only or read-write.

The properties of a read-only buffer such as its position, limit, and mark can be changed, but not its data.

You can get a read-only buffer by calling the asReadOnlyBuffer().

To check if a buffer is read-only by calling the isReadOnly() method as follows:

// Create a buffer that is read-write by default
ByteBuffer bb = ByteBuffer.allocate(1024);
boolean readOnly = bb.isReadOnly(); // Assigns false to readOnly

// Get a read-only buffer
ByteBuffer bbReadOnly = bb.asReadOnlyBuffer();
readOnly = bbReadOnly.isReadOnly(); // Assigns true to readOnly

The read-only buffer returned by the asReadOnlyBuffer() method is a different view of the same buffer.

The new read-only buffer shares data with its original buffer.

Any modifications to the contents of the original buffer are reflected in the read-only buffer.

A read-only buffer has the same value of position, mark, limit, and capacity as its original buffer at the time of creation and it maintains them independently afterwards.