org.mapdb.volume / FileChannelVol


class FileChannelVol : Volume

Volume which uses FileChannel. Uses global lock and does not use mapped memory.


<init> FileChannelVol(file: File, readOnly: Boolean, fileLockWait: Long, sliceShift: Int, initSize: Long)
FileChannelVol(file: File)


FACTORY static val FACTORY: VolumeFactory

Inherited Properties


If sun.misc.Unsafe is available it will use Volume based on Unsafe. If Unsafe is not available for some reason (Android), use DirectByteBuffer instead.


clear fun clear(startOffset: Long, endOffset: Long): Unit
static fun clear(channel: FileChannel, startOffset: Long, endOffset: Long): Unit
close fun close(): Unit
ensureAvailable fun ensureAvailable(offset: Long): Unit
getByte fun getByte(offset: Long): Byte
getData fun getData(offset: Long, bytes: ByteArray, bytesPos: Int, size: Int): Unit
getDataInput fun getDataInput(offset: Long, size: Int): ByteBuffer
getFile fun getFile(): File
getFileLocked fun getFileLocked(): Boolean
getInt fun getInt(offset: Long): Int
getLong fun getLong(offset: Long): Long
isReadOnly fun isReadOnly(): Boolean
isSliced fun isSliced(): Boolean
length fun length(): Long
putByte fun putByte(offset: Long, value: Byte): Unit
putData fun putData(offset: Long, src: ByteArray, srcPos: Int, srcSize: Int): Unit
fun putData(offset: Long, buf: ByteBuffer): Unit
putInt fun putInt(offset: Long, value: Int): Unit
putLong fun putLong(offset: Long, value: Long): Unit
sliceSize fun sliceSize(): Int
sync fun sync(): Unit
truncate fun truncate(size: Long): Unit

Inherited Functions

assertZeroes open fun assertZeroes(startOffset: Long, endOffset: Long): Unit

Check that all bytes between given offsets are zero. This might cross 1MB boundaries

clearOverlap open fun clearOverlap(startOffset: Long, endOffset: Long): Unit
copyFrom open fun copyFrom(input: InputStream): Unit

Copy content from InputStream into this Volume.

copyTo open fun copyTo(inputOffset: Long, target: Volume, targetOffset: Long, size: Long): Unit

Transfers data from this Volume into target volume. If its possible, the implementation should override this method to enable direct memory transfer. Caller must respect slice boundaries. ie it is not possible to transfer data which cross slice boundaries.

open fun copyTo(to: Volume): Unit

Copy content of this volume to another. Target volume might grow, but is never shrank. Target is also not synced

open fun copyTo(output: OutputStream): Unit

Copy content of this volume to OutputStream.

deleteFile open fun deleteFile(): Unit
fileLoad open fun fileLoad(): Boolean

If underlying storage is memory-mapped-file, this method will try to load and precache all file data into disk cache. Most likely it will call MappedByteBuffer#load(), but could also read content of entire file etc This method will not pin data into memory, they might be removed at any time.

getDataInputOverlap open fun getDataInputOverlap(offset: Long, size: Int): DataInput2
getPackedLong open fun getPackedLong(position: Long): Long

Unpack long value from the Volume. Highest 4 bits reused to indicate number of bytes read from Volume. One can use result & DataIO.PACK_LONG_RESULT_MASK to remove size;

getSixLong open fun getSixLong(pos: Long): Long
getUnsignedByte open fun getUnsignedByte(offset: Long): Int
getUnsignedShort open fun getUnsignedShort(offset: Long): Int
hash open fun hash(off: Long, len: Long, seed: Long): Long

Calculates XXHash64 from this Volume content.

isClosed open fun isClosed(): Boolean
putDataOverlap open fun putDataOverlap(offset: Long, src: ByteArray, srcPos: Int, srcSize: Int): Unit
putPackedLong open fun putPackedLong(pos: Long, value: Long): Int

Put packed long at given position.

putSixLong open fun putSixLong(pos: Long, value: Long): Unit
putUnsignedByte open fun putUnsignedByte(offset: Long, b: Int): Unit
putUnsignedShort open fun putUnsignedShort(offset: Long, value: Int): Unit