FileDocCategorySizeDatePackage
MappedByteBuffer.javaAPI DocAndroid 1.5 API4168Wed May 06 22:41:04 BST 2009java.nio

MappedByteBuffer

public abstract class MappedByteBuffer extends ByteBuffer
{@code MappedByteBuffer} is a special kind of direct byte buffer which maps a region of file to memory.

{@code MappedByteBuffer} can be created by calling {@link java.nio.channels.FileChannel#map(java.nio.channels.FileChannel.MapMode, long, long) FileChannel.map}. Once created, the mapping between the byte buffer and the file region remains valid until the byte buffer is garbage collected.

All or part of a {@code MappedByteBuffer}'s content may change or become inaccessible at any time, since the mapped file region can be modified by another thread or process at any time. If this happens, the behavior of the {@code MappedByteBuffer} is undefined.

since
Android 1.0

Fields Summary
final DirectByteBuffer
wrapped
private int
mapMode
Constructors Summary
MappedByteBuffer(ByteBuffer directBuffer)

        super(directBuffer.capacity);
        if (!directBuffer.isDirect()) {
            throw new IllegalArgumentException();
        }
        this.wrapped = (DirectByteBuffer) directBuffer;

    
MappedByteBuffer(org.apache.harmony.luni.platform.PlatformAddress addr, int capa, int offset, int mode)

        super(capa);
        mapMode = mode;
        switch (mapMode) {
        case IMemorySystem.MMAP_READ_ONLY:
            wrapped = new ReadOnlyDirectByteBuffer(addr, capa, offset);
            break;
        case IMemorySystem.MMAP_READ_WRITE:
        case IMemorySystem.MMAP_WRITE_COPY:
            wrapped = new ReadWriteDirectByteBuffer(addr, capa, offset);
            break;
        default:
            throw new IllegalArgumentException();
        }
        addr.autoFree();
    
Methods Summary
public final java.nio.MappedByteBufferforce()
Writes all changes of the buffer to the mapped file. If the mapped file is stored on a local device, it is guaranteed that the changes are written to the file. No such guarantee is given if the file is located on a remote device.

return
this buffer.
since
Android 1.0

        if (mapMode == IMemorySystem.MMAP_READ_WRITE) {
            ((MappedPlatformAddress)((DirectBuffer) wrapped).getBaseAddress()).mmapFlush();
        }
        return this;
    
public final booleanisLoaded()
Indicates whether this buffer's content is loaded. If the result is true there is a high probability that the whole buffer memory is currently loaded in RAM. If it is false it is unsure if it is loaded or not.

return
{@code true} if this buffer's content is loaded, {@code false} otherwise.
since
Android 1.0

        return ((MappedPlatformAddress)((DirectBuffer) wrapped).getBaseAddress()).mmapIsLoaded();
    
public final java.nio.MappedByteBufferload()
Loads this buffer's content into memory but it is not guaranteed to succeed.

return
this buffer.
since
Android 1.0

        ((MappedPlatformAddress)((DirectBuffer) wrapped).getBaseAddress()).mmapLoad();
        return this;