< prev index next >

src/java.base/share/classes/java/nio/X-Buffer.java.template

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 27,36 **** --- 27,37 ---- package java.nio; #if[char] import java.io.IOException; + import java.util.Objects; #end[char] #if[streamableType] import java.util.Spliterator; import java.util.stream.StreamSupport; import java.util.stream.$Streamtype$Stream;
*** 1546,1555 **** --- 1547,1590 ---- */ public $Type$Buffer append($type$ $x$) { return put($x$); } + /** + * {@inheritDoc} + * + * @implSpec + * The implementation transfers data by one of two means. If the given {@link Appendable} + * is a {@link CharBuffer}, {@code put(CharBuffer)} is invoked on it with this + * buffer as parameter. Otherwise {@link Appendable#append(CharSequence, int, int)} is + * invoked on it with this buffer and its position and length as parameters. + * + * @param out the appendable, non-null + * @return the number of characters transferred + * @throws IOException if an I/O error occurs when reading or writing + * @throws NullPointerException if {@code out} is {@code null} + * @throws BufferOverflowException if there is insufficient space in out + * buffer for the remaining chars in the source buffer + * @throws IllegalArgumentException if out is this buffer + * @throws ReadOnlyBufferException if out is a read-only buffer + * + * @since 10 + */ + @Override + public long transferTo(Appendable out) throws IOException { + Objects.requireNonNull(out, "out"); + if (this == out) { + throw new IllegalArgumentException("Illegal transfer of a buffer to itself"); + } + int length = remaining(); + if (out instanceof CharBuffer) { + ((CharBuffer)out).put(this); + } else { + out.append(this, position(), length); + } + return length; + } #end[char] // -- Other byte stuff: Access to binary data --
< prev index next >