/** Splits current element in the list, using DiskRange::slice */ public DiskRangeList split(long cOffset) { insertAfter((DiskRangeList)this.sliceAndShift(cOffset, end, 0)); return replaceSelfWith((DiskRangeList)this.sliceAndShift(offset, cOffset, 0)); }
BufferChunk bc = new BufferChunk(partial, off); if (!hasReplaced) { range.replaceSelfWith(bc); hasReplaced = true; } else { ByteBuffer directBuf = ByteBuffer.allocateDirect(len); readDirect(file, len, directBuf); range = range.replaceSelfWith(new BufferChunk(directBuf, range.getOffset())); } else { byte[] buffer = new byte[len]; file.readFully(buffer, 0, buffer.length); range = range.replaceSelfWith(new BufferChunk(ByteBuffer.wrap(buffer), range.getOffset()));