MappedByteBuffer
public
abstract
class
MappedByteBuffer
extends ByteBuffer
A direct byte buffer whose content is a memory-mapped region of a file.
Mapped byte buffers are created via the FileChannel.map method. This class
extends the ByteBuffer class with operations that are specific to
memory-mapped file regions.
A mapped byte buffer and the file mapping that it represents remain
valid until the buffer itself is garbage-collected.
The content of a mapped byte buffer can change at any time, for example
if the content of the corresponding region of the mapped file is changed by
this program or another. Whether or not such changes occur, and when they
occur, is operating-system dependent and therefore unspecified.
All or part of a mapped byte buffer may become
inaccessible at any time, for example if the mapped file is truncated. An
attempt to access an inaccessible region of a mapped byte buffer will not
change the buffer's content and will cause an unspecified exception to be
thrown either at the time of the access or at some later time. It is
therefore strongly recommended that appropriate precautions be taken to
avoid the manipulation of a mapped file by this program, or by a
concurrently running program, except to read or write the file's content.
Mapped byte buffers otherwise behave no differently than ordinary direct
byte buffers.
Summary
Public methods |
abstract
ByteBuffer
|
duplicate()
Creates a new byte buffer that shares this buffer's content.
|
final
MappedByteBuffer
|
force()
Forces any changes made to this buffer's content to be written to the
storage device containing the mapped file.
|
final
boolean
|
isLoaded()
Tells whether or not this buffer's content is resident in physical
memory.
|
final
MappedByteBuffer
|
load()
Loads this buffer's content into physical memory.
|
abstract
MappedByteBuffer
|
slice(int index, int length)
Creates a new byte buffer whose content is a shared subsequence of
this buffer's content.
Reading bytes into physical memory by invoking load() on the
returned buffer, or writing bytes to the storage device by invoking
force() on the returned buffer, will only act on the sub-range
of this buffer that the returned buffer represents, namely
[index,index+length), where index and length are
assumed to satisfy the preconditions.
|
abstract
ByteBuffer
|
slice()
Creates a new byte buffer whose content is a shared subsequence of
this buffer's content.
Reading bytes into physical memory by invoking load() on the
returned buffer, or writing bytes to the storage device by invoking
force() on the returned buffer, will only act on the sub-range
of this buffer that the returned buffer represents, namely
[position(),limit()).
|
Inherited methods |
From class
java.nio.ByteBuffer
final
ByteBuffer
|
alignedSlice(int unitSize)
Creates a new byte buffer whose content is a shared and aligned
subsequence of this buffer's content.
|
final
int
|
alignmentOffset(int index, int unitSize)
Returns the memory address, pointing to the byte at the given index,
modulus the given unit size.
|
static
ByteBuffer
|
allocate(int capacity)
Allocates a new byte buffer.
|
static
ByteBuffer
|
allocateDirect(int capacity)
Allocates a new direct byte buffer.
|
final
byte[]
|
array()
Returns the byte array that backs this
buffer (optional operation).
|
final
int
|
arrayOffset()
Returns the offset within this buffer's backing array of the first
element of the buffer (optional operation).
|
abstract
CharBuffer
|
asCharBuffer()
Creates a view of this byte buffer as a char buffer.
|
abstract
DoubleBuffer
|
asDoubleBuffer()
Creates a view of this byte buffer as a double buffer.
|
abstract
FloatBuffer
|
asFloatBuffer()
Creates a view of this byte buffer as a float buffer.
|
abstract
IntBuffer
|
asIntBuffer()
Creates a view of this byte buffer as an int buffer.
|
abstract
LongBuffer
|
asLongBuffer()
Creates a view of this byte buffer as a long buffer.
|
abstract
ByteBuffer
|
asReadOnlyBuffer()
Creates a new, read-only byte buffer that shares this buffer's
content.
|
abstract
ShortBuffer
|
asShortBuffer()
Creates a view of this byte buffer as a short buffer.
|
Buffer
|
clear()
Clears this buffer.
|
abstract
ByteBuffer
|
compact()
Compacts this buffer (optional operation).
|
int
|
compareTo(ByteBuffer that)
Compares this buffer to another.
|
abstract
ByteBuffer
|
duplicate()
Creates a new byte buffer that shares this buffer's content.
|
boolean
|
equals(Object ob)
Tells whether or not this buffer is equal to another object.
|
Buffer
|
flip()
Flips this buffer.
|
abstract
byte
|
get()
Relative get method.
|
ByteBuffer
|
get(byte[] dst, int offset, int length)
Relative bulk get method.
|
abstract
byte
|
get(int index)
Absolute get method.
|
ByteBuffer
|
get(byte[] dst)
Relative bulk get method.
|
abstract
char
|
getChar()
Relative get method for reading a char value.
|
abstract
char
|
getChar(int index)
Absolute get method for reading a char value.
|
abstract
double
|
getDouble(int index)
Absolute get method for reading a double value.
|
abstract
double
|
getDouble()
Relative get method for reading a double value.
|
abstract
float
|
getFloat()
Relative get method for reading a float value.
|
abstract
float
|
getFloat(int index)
Absolute get method for reading a float value.
|
abstract
int
|
getInt(int index)
Absolute get method for reading an int value.
|
abstract
int
|
getInt()
Relative get method for reading an int value.
|
abstract
long
|
getLong(int index)
Absolute get method for reading a long value.
|
abstract
long
|
getLong()
Relative get method for reading a long value.
|
abstract
short
|
getShort(int index)
Absolute get method for reading a short value.
|
abstract
short
|
getShort()
Relative get method for reading a short value.
|
final
boolean
|
hasArray()
Tells whether or not this buffer is backed by an accessible byte
array.
|
int
|
hashCode()
Returns the current hash code of this buffer.
|
abstract
boolean
|
isDirect()
Tells whether or not this byte buffer is direct.
|
Buffer
|
limit(int newLimit)
Sets this buffer's limit.
|
Buffer
|
mark()
Sets this buffer's mark at its position.
|
int
|
mismatch(ByteBuffer that)
Finds and returns the relative index of the first mismatch between this
buffer and a given buffer.
|
final
ByteOrder
|
order()
Retrieves this buffer's byte order.
|
final
ByteBuffer
|
order(ByteOrder bo)
Modifies this buffer's byte order.
|
Buffer
|
position(int newPosition)
Sets this buffer's position.
|
final
ByteBuffer
|
put(byte[] src)
Relative bulk put method (optional operation).
|
abstract
ByteBuffer
|
put(byte b)
Relative put method (optional operation).
|
ByteBuffer
|
put(byte[] src, int offset, int length)
Relative bulk put method (optional operation).
|
abstract
ByteBuffer
|
put(int index, byte b)
Absolute put method (optional operation).
|
ByteBuffer
|
put(ByteBuffer src)
Relative bulk put method (optional operation).
|
abstract
ByteBuffer
|
putChar(int index, char value)
Absolute put method for writing a char
value (optional operation).
|
abstract
ByteBuffer
|
putChar(char value)
Relative put method for writing a char
value (optional operation).
|
abstract
ByteBuffer
|
putDouble(double value)
Relative put method for writing a double
value (optional operation).
|
abstract
ByteBuffer
|
putDouble(int index, double value)
Absolute put method for writing a double
value (optional operation).
|
abstract
ByteBuffer
|
putFloat(int index, float value)
Absolute put method for writing a float
value (optional operation).
|
abstract
ByteBuffer
|
putFloat(float value)
Relative put method for writing a float
value (optional operation).
|
abstract
ByteBuffer
|
putInt(int index, int value)
Absolute put method for writing an int
value (optional operation).
|
abstract
ByteBuffer
|
putInt(int value)
Relative put method for writing an int
value (optional operation).
|
abstract
ByteBuffer
|
putLong(long value)
Relative put method for writing a long
value (optional operation).
|
abstract
ByteBuffer
|
putLong(int index, long value)
Absolute put method for writing a long
value (optional operation).
|
abstract
ByteBuffer
|
putShort(short value)
Relative put method for writing a short
value (optional operation).
|
abstract
ByteBuffer
|
putShort(int index, short value)
Absolute put method for writing a short
value (optional operation).
|
Buffer
|
reset()
Resets this buffer's position to the previously-marked position.
|
Buffer
|
rewind()
Rewinds this buffer.
|
abstract
ByteBuffer
|
slice()
Creates a new byte buffer whose content is a shared subsequence of
this buffer's content.
|
abstract
ByteBuffer
|
slice(int index, int length)
Creates a new byte buffer whose content is a shared subsequence of
this buffer's content.
|
String
|
toString()
Returns a string summarizing the state of this buffer.
|
static
ByteBuffer
|
wrap(byte[] array)
Wraps a byte array into a buffer.
|
static
ByteBuffer
|
wrap(byte[] array, int offset, int length)
Wraps a byte array into a buffer.
|
|
From class
java.nio.Buffer
abstract
Object
|
array()
Returns the array that backs this
buffer (optional operation).
|
abstract
int
|
arrayOffset()
Returns the offset within this buffer's backing array of the first
element of the buffer (optional operation).
|
final
int
|
capacity()
Returns this buffer's capacity.
|
Buffer
|
clear()
Clears this buffer.
|
abstract
Buffer
|
duplicate()
Creates a new buffer that shares this buffer's content.
|
Buffer
|
flip()
Flips this buffer.
|
abstract
boolean
|
hasArray()
Tells whether or not this buffer is backed by an accessible
array.
|
final
boolean
|
hasRemaining()
Tells whether there are any elements between the current position and
the limit.
|
abstract
boolean
|
isDirect()
Tells whether or not this buffer is
direct.
|
abstract
boolean
|
isReadOnly()
Tells whether or not this buffer is read-only.
|
final
int
|
limit()
Returns this buffer's limit.
|
Buffer
|
limit(int newLimit)
Sets this buffer's limit.
|
Buffer
|
mark()
Sets this buffer's mark at its position.
|
Buffer
|
position(int newPosition)
Sets this buffer's position.
|
final
int
|
position()
Returns this buffer's position.
|
final
int
|
remaining()
Returns the number of elements between the current position and the
limit.
|
Buffer
|
reset()
Resets this buffer's position to the previously-marked position.
|
Buffer
|
rewind()
Rewinds this buffer.
|
abstract
Buffer
|
slice(int index, int length)
Creates a new buffer whose content is a shared subsequence of
this buffer's content.
|
abstract
Buffer
|
slice()
Creates a new buffer whose content is a shared subsequence of
this buffer's content.
|
|
From class
java.lang.Object
Object
|
clone()
Creates and returns a copy of this object.
|
boolean
|
equals(Object obj)
Indicates whether some other object is "equal to" this one.
|
void
|
finalize()
Called by the garbage collector on an object when garbage collection
determines that there are no more references to the object.
|
final
Class<?>
|
getClass()
Returns the runtime class of this Object.
|
int
|
hashCode()
Returns a hash code value for the object.
|
final
void
|
notify()
Wakes up a single thread that is waiting on this object's
monitor.
|
final
void
|
notifyAll()
Wakes up all threads that are waiting on this object's monitor.
|
String
|
toString()
Returns a string representation of the object.
|
final
void
|
wait(long timeoutMillis, int nanos)
Causes the current thread to wait until it is awakened, typically
by being notified or interrupted, or until a
certain amount of real time has elapsed.
|
final
void
|
wait(long timeoutMillis)
Causes the current thread to wait until it is awakened, typically
by being notified or interrupted, or until a
certain amount of real time has elapsed.
|
final
void
|
wait()
Causes the current thread to wait until it is awakened, typically
by being notified or interrupted.
|
|
|
|
Public methods
duplicate
public abstract ByteBuffer duplicate ()
Creates a new byte buffer that shares this buffer's content.
The content of the new buffer will be that of this buffer. Changes
to this buffer's content will be visible in the new buffer, and vice
versa; the two buffers' position, limit, and mark values will be
independent.
The new buffer's capacity, limit, position, and mark values will be
identical to those of this buffer. The new buffer will be direct if,
and only if, this buffer is direct, and it will be read-only if, and
only if, this buffer is read-only.
force
public final MappedByteBuffer force ()
Forces any changes made to this buffer's content to be written to the
storage device containing the mapped file.
If the file mapped into this buffer resides on a local storage
device then when this method returns it is guaranteed that all changes
made to the buffer since it was created, or since this method was last
invoked, will have been written to that device.
If the file does not reside on a local device then no such guarantee
is made.
If this buffer was not mapped in read/write mode (FileChannel.MapMode.READ_WRITE) then invoking this
method has no effect.
isLoaded
public final boolean isLoaded ()
Tells whether or not this buffer's content is resident in physical
memory.
A return value of true implies that it is highly likely
that all of the data in this buffer is resident in physical memory and
may therefore be accessed without incurring any virtual-memory page
faults or I/O operations. A return value of false does not
necessarily imply that the buffer's content is not resident in physical
memory.
The returned value is a hint, rather than a guarantee, because the
underlying operating system may have paged out some of the buffer's data
by the time that an invocation of this method returns.
| Returns |
boolean |
true if it is likely that this buffer's content
is resident in physical memory |
load
public final MappedByteBuffer load ()
Loads this buffer's content into physical memory.
This method makes a best effort to ensure that, when it returns,
this buffer's content is resident in physical memory. Invoking this
method may cause some number of page faults and I/O operations to
occur.
slice
public abstract MappedByteBuffer slice (int index,
int length)
Creates a new byte buffer whose content is a shared subsequence of
this buffer's content.
The content of the new buffer will start at position index
in this buffer, and will contain length elements. Changes to
this buffer's content will be visible in the new buffer, and vice versa;
the two buffers' position, limit, and mark values will be independent.
The new buffer's position will be zero, its capacity and its limit
will be length, its mark will be undefined, and its byte order
will be BIG_ENDIAN.
The new buffer will be direct if, and only if, this buffer is direct,
and it will be read-only if, and only if, this buffer is read-only.
Reading bytes into physical memory by invoking load() on the
returned buffer, or writing bytes to the storage device by invoking
force() on the returned buffer, will only act on the sub-range
of this buffer that the returned buffer represents, namely
[index,index+length), where index and length are
assumed to satisfy the preconditions.
| Parameters |
index |
int: The position in this buffer at which the content of the new
buffer will start; must be non-negative and no larger than
limit() |
length |
int: The number of elements the new buffer will contain; must be
non-negative and no larger than limit() - index |
slice
public abstract ByteBuffer slice ()
Creates a new byte buffer whose content is a shared subsequence of
this buffer's content.
The content of the new buffer will start at this buffer's current
position. Changes to this buffer's content will be visible in the new
buffer, and vice versa; the two buffers' position, limit, and mark
values will be independent.
The new buffer's position will be zero, its capacity and its limit
will be the number of bytes remaining in this buffer, and its mark
will be undefined. The new buffer will be direct if, and only if, this
buffer is direct, and it will be read-only if, and only if, this buffer
is read-only.
Reading bytes into physical memory by invoking load() on the
returned buffer, or writing bytes to the storage device by invoking
force() on the returned buffer, will only act on the sub-range
of this buffer that the returned buffer represents, namely
[position(),limit()).