Summary
Add new API for transferring data from a java.io.Reader to a java.io.Writer like already existing java.io.InputStream.transferTo(java.io.OutputStream).
Problem
In order to transfer all data from a Reader to a Writer mostly the same code has to be written or an external library has to be used instead. This overhead could be reduced by introducing such behavior directly within the JDK as already available on InputStream for byte data.
Solution
Add an new API that implements the behavior that would otherwise need to be written by the user.
Specification
java.io.Reader
+ /**
+ * Reads all characters from this reader and writes the characters to the
+ * given writer in the order that they are read. On return, this reader
+ * will be at end of the stream. This method does not close either reader
+ * or writer.
+ * <p>
+ * This method may block indefinitely reading from the reader, or
+ * writing to the writer. The behavior for the case where the reader
+ * and/or writer is <i>asynchronously closed</i>, or the thread
+ * interrupted during the transfer, is highly reader and writer
+ * specific, and therefore not specified.
+ * <p>
+ * If an I/O error occurs reading from the reader or writing to the
+ * writer, then it may do so after some characters have been read or
+ * written. Consequently the reader may not be at end of the 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 writer, 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}
+ *
+ * @since 10
+ */
+ public long transferTo(Writer out) throws IOException
Detailed changes see webrev
http://cr.openjdk.java.net/~reinhapa/reviews/8191706/webrev.00
- csr of
-
JDK-8191706 Add Reader::transferTo(Writer)
-
- Resolved
-