Library enhancement proposal for copying data from/to Reader/Writer InputStream/OutputStream

Alan Bateman Alan.Bateman at oracle.com
Mon Dec 8 11:52:30 UTC 2014


On 08/12/2014 11:48, Chris Hegarty wrote:
> For completeness, here is the finalized spec that we intend to submit 
> for approval. Just some minor rewording and grammaticality amendments 
> over the previous.
>
>    /**
>      * Reads all bytes from this input stream and writes the bytes to 
> the given
>      * output stream in the order that they are read.  On return, this 
> input
>      * stream will be at end of stream.
>      * <p>
>      * This method may block indefinitely reading from the input stream,
>      * or writing to the output stream. The behavior for the case that 
> the
>      * input and/or output stream is <i>asynchronously closed</i>, or the
>      * thread interrupted during the transfer, is highly input and 
> output stream
>      * specific, and therefore not specified.
>      * <p>
>      * If an I/O error occurs reading from the input stream or writing to
>      * the output stream, then it may do so after some bytes have been 
> read or
>      * written. Consequently the input stream may not be at end of 
> stream and
>      * one, or both, streams may be in an inconsistent state. It is 
> strongly
>      * recommended that both streams be promptly closed if an I/O 
> error occurs.
>      *
>      * @param  out the output stream, non-null
>      * @return the number of bytes transferred
>      * @throws IOException if an I/O error occurs when reading or writing
>      * @throws NullPointerException  if {@code out} is {@code null}
>      *
>      * @since 1.9
>      */
>     public long transferTo(OutputStream out) throws IOException { ... }
I'm happy with this updated wording, it's consistent with the wording 
that we already have in Files.copy, and it addresses all the points that 
have come up.

-Alan



More information about the core-libs-dev mailing list