< prev index next >
src/java.base/share/classes/java/nio/X-Buffer.java.template
Print this page
@@ -1127,10 +1127,71 @@
*/
public $Type$Buffer put(int index, $type$[] src) {
return put(index, src, 0, src.length);
}
+ /**
+ * Absolute bulk <i>put</i> method <i>(optional operation)</i>.
+ *
+ * <p> This method transfers {@code length} $type$s into this buffer
+ * from the source buffer, starting at the given {@code srcIndex} in the
+ * source buffer and the given {@code index} in this buffer. The positions
+ * of both buffers are unchanged. If the source buffer is this buffer and
+ * the source and target intervals overlap, then the buffer elements in the
+ * target range will be overwritten by those in the source range of the
+ * same buffer which could lead to unexpected results.
+ *
+ * <p> An invocation of this method of the form
+ * <code>dst.put(index, src, srcIndex, length)</code>
+ * has exactly the same effect as the following loop except that it first
+ * checks the consistency of the supplied parameters and it is potentially
+ * much more efficient:
+ *
+ * <pre>{@code
+ * for (int i = srcIndex, j = index; i < srcIndex + length; i++, j++)
+ * dst.put(j, src.get(i));
+ * }</pre>
+ *
+ * @param index
+ * The index in this buffer at which the first $type$ will be
+ * written; must be non-negative and less than {@code limit()}
+ *
+ * @param src
+ * The buffer from which $type$s are to be read
+ *
+ * @param srcIndex
+ * The index within the source buffer of the first $type$ to be
+ * read; must be non-negative and less than {@code src.limit()}
+ *
+ * @param length
+ * The number of $type$s to be read from the given buffer;
+ * must be non-negative and no larger than the smaller of
+ * {@code limit() - index} and {@code src.limit() - srcIndex}
+ *
+ * @return This buffer
+ *
+ * @throws IndexOutOfBoundsException
+ * If the preconditions on the {@code index}, {@code srcIndex}, and
+ * {@code length} parameters do not hold
+ *
+ * @throws ReadOnlyBufferException
+ * If this buffer is read-only
+ *
+ * @since 15
+ */
+ public $Type$Buffer put(int index, $Type$Buffer src, int srcIndex,
+ int length) {
+ if (isReadOnly())
+ throw new ReadOnlyBufferException();
+ Objects.checkFromIndexSize(index, length, limit());
+ Objects.checkFromIndexSize(srcIndex, length, src.limit());
+ int end = srcIndex + length;
+ for (int i = srcIndex, j = index; i < end; i++, j++)
+ this.put(j, src.get(i));
+ return this;
+ }
+
#if[char]
/**
* Relative bulk <i>put</i> method <i>(optional operation)</i>.
*
< prev index next >