You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sebb <se...@gmail.com> on 2012/10/25 23:51:25 UTC
Re: svn commit: r1402280 - in /commons/proper/io/trunk/src:
changes/changes.xml main/java/org/apache/commons/io/IOUtils.java test/java/org/apache/commons/io/IOUtilsCopyTestCase.java
On 25 October 2012 20:15, <gg...@apache.org> wrote:
> Author: ggregory
> Date: Thu Oct 25 19:15:57 2012
> New Revision: 1402280
>
> URL: http://svn.apache.org/viewvc?rev=1402280&view=rev
> Log:
> [IO-353] Add API IOUtils.copy(InputStream, OutputStream, int).
>
> Modified:
> commons/proper/io/trunk/src/changes/changes.xml
> commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java
> commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsCopyTestCase.java
>
> Modified: commons/proper/io/trunk/src/changes/changes.xml
> URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/changes/changes.xml?rev=1402280&r1=1402279&r2=1402280&view=diff
> ==============================================================================
> --- commons/proper/io/trunk/src/changes/changes.xml (original)
> +++ commons/proper/io/trunk/src/changes/changes.xml Thu Oct 25 19:15:57 2012
> @@ -47,6 +47,9 @@ The <action> type attribute can be add,u
> <body>
> <!-- The release date is the date RC is cut -->
> <release version="2.5" date="201?-??-??" description="New features and bug fixes.">
> + <action issue="IO-353" dev="ggregory" type="add" due-to="ggregory">
> + Add API IOUtils.copy(InputStream, OutputStream, int)
> + </action>
> <action issue="IO-349" dev="ggregory" type="add" due-to="scop">
> Add API with array offset and length argument to FileUtils.writeByteArrayToFile.
> </action>
>
> Modified: commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java
> URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java?rev=1402280&r1=1402279&r2=1402280&view=diff
> ==============================================================================
> --- commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java (original)
> +++ commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java Thu Oct 25 19:15:57 2012
> @@ -1749,6 +1749,30 @@ public class IOUtils {
> }
>
> /**
> + * Copy bytes from an <code>InputStream</code> to an <code>OutputStream</code> using an internal buffer of the
> + * given size.
> + * <p>
> + * This method buffers the input internally, so there is no need to use a <code>BufferedInputStream</code>.
> + * <p>
> + *
> + * @param input
> + * the <code>InputStream</code> to read from
> + * @param output
> + * the <code>OutputStream</code> to write to
> + * @param bufferSize
> + * the bufferSize used to copy from the input to the output
> + * @return the number of bytes copied
> + * @throws NullPointerException
> + * if the input or output is null
> + * @throws IOException
> + * if an I/O error occurs
> + * @since 2.5
> + */
> + public static long copy(InputStream input, OutputStream output, int bufferSize) throws IOException {
> + return copyLarge(input, output, new byte[bufferSize]);
> + }
> +
> + /**
> * Copy bytes from a large (over 2GB) <code>InputStream</code> to an
> * <code>OutputStream</code>.
> * <p>
> @@ -1766,7 +1790,7 @@ public class IOUtils {
> */
> public static long copyLarge(InputStream input, OutputStream output)
> throws IOException {
> - return copyLarge(input, output, new byte[DEFAULT_BUFFER_SIZE]);
> + return copy(input, output, DEFAULT_BUFFER_SIZE);
Please don't mix changes in a single commit.
AFAICT the above change is nothing to do with IO-353.
> }
>
> /**
>
> Modified: commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsCopyTestCase.java
> URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsCopyTestCase.java?rev=1402280&r1=1402279&r2=1402280&view=diff
> ==============================================================================
> --- commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsCopyTestCase.java (original)
> +++ commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsCopyTestCase.java Thu Oct 25 19:15:57 2012
> @@ -86,6 +86,39 @@ public class IOUtilsCopyTestCase extends
> assertEquals(inData.length,count);
> }
>
> + public void testCopy_inputStreamToOutputStreamWithBufferSize() throws Exception {
> + testCopy_inputStreamToOutputStreamWithBufferSize(1);
> + testCopy_inputStreamToOutputStreamWithBufferSize(2);
> + testCopy_inputStreamToOutputStreamWithBufferSize(4);
> + testCopy_inputStreamToOutputStreamWithBufferSize(8);
> + testCopy_inputStreamToOutputStreamWithBufferSize(16);
> + testCopy_inputStreamToOutputStreamWithBufferSize(32);
> + testCopy_inputStreamToOutputStreamWithBufferSize(64);
> + testCopy_inputStreamToOutputStreamWithBufferSize(128);
> + testCopy_inputStreamToOutputStreamWithBufferSize(256);
> + testCopy_inputStreamToOutputStreamWithBufferSize(512);
> + testCopy_inputStreamToOutputStreamWithBufferSize(1024);
> + testCopy_inputStreamToOutputStreamWithBufferSize(2048);
> + testCopy_inputStreamToOutputStreamWithBufferSize(4096);
> + testCopy_inputStreamToOutputStreamWithBufferSize(8192);
> + testCopy_inputStreamToOutputStreamWithBufferSize(16384);
> + }
> +
> + private void testCopy_inputStreamToOutputStreamWithBufferSize(int bufferSize) throws Exception {
> + InputStream in = new ByteArrayInputStream(inData);
> + in = new YellOnCloseInputStream(in);
> +
> + ByteArrayOutputStream baout = new ByteArrayOutputStream();
> + OutputStream out = new YellOnFlushAndCloseOutputStream(baout, false, true);
> +
> + long count = IOUtils.copy(in, out, bufferSize);
> +
> + assertEquals("Not all bytes were read", 0, in.available());
> + assertEquals("Sizes differ", inData.length, baout.size());
> + assertTrue("Content differs", Arrays.equals(inData, baout.toByteArray()));
> + assertEquals(inData.length,count);
> + }
> +
> public void testCopy_inputStreamToOutputStream_nullIn() throws Exception {
> OutputStream out = new ByteArrayOutputStream();
> try {
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org
Re: svn commit: r1402280 - in /commons/proper/io/trunk/src:
changes/changes.xml main/java/org/apache/commons/io/IOUtils.java test/java/org/apache/commons/io/IOUtilsCopyTestCase.java
Posted by Gary Gregory <ga...@gmail.com>.
On Oct 25, 2012, at 17:51, sebb <se...@gmail.com> wrote:
> On 25 October 2012 20:15, <gg...@apache.org> wrote:
>> Author: ggregory
>> Date: Thu Oct 25 19:15:57 2012
>> New Revision: 1402280
>>
>> URL: http://svn.apache.org/viewvc?rev=1402280&view=rev
>> Log:
>> [IO-353] Add API IOUtils.copy(InputStream, OutputStream, int).
>>
>> Modified:
>> commons/proper/io/trunk/src/changes/changes.xml
>> commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java
>> commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsCopyTestCase.java
>>
>> Modified: commons/proper/io/trunk/src/changes/changes.xml
>> URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/changes/changes.xml?rev=1402280&r1=1402279&r2=1402280&view=diff
>> ==============================================================================
>> --- commons/proper/io/trunk/src/changes/changes.xml (original)
>> +++ commons/proper/io/trunk/src/changes/changes.xml Thu Oct 25 19:15:57 2012
>> @@ -47,6 +47,9 @@ The <action> type attribute can be add,u
>> <body>
>> <!-- The release date is the date RC is cut -->
>> <release version="2.5" date="201?-??-??" description="New features and bug fixes.">
>> + <action issue="IO-353" dev="ggregory" type="add" due-to="ggregory">
>> + Add API IOUtils.copy(InputStream, OutputStream, int)
>> + </action>
>> <action issue="IO-349" dev="ggregory" type="add" due-to="scop">
>> Add API with array offset and length argument to FileUtils.writeByteArrayToFile.
>> </action>
>>
>> Modified: commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java
>> URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java?rev=1402280&r1=1402279&r2=1402280&view=diff
>> ==============================================================================
>> --- commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java (original)
>> +++ commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java Thu Oct 25 19:15:57 2012
>> @@ -1749,6 +1749,30 @@ public class IOUtils {
>> }
>>
>> /**
>> + * Copy bytes from an <code>InputStream</code> to an <code>OutputStream</code> using an internal buffer of the
>> + * given size.
>> + * <p>
>> + * This method buffers the input internally, so there is no need to use a <code>BufferedInputStream</code>.
>> + * <p>
>> + *
>> + * @param input
>> + * the <code>InputStream</code> to read from
>> + * @param output
>> + * the <code>OutputStream</code> to write to
>> + * @param bufferSize
>> + * the bufferSize used to copy from the input to the output
>> + * @return the number of bytes copied
>> + * @throws NullPointerException
>> + * if the input or output is null
>> + * @throws IOException
>> + * if an I/O error occurs
>> + * @since 2.5
>> + */
>> + public static long copy(InputStream input, OutputStream output, int bufferSize) throws IOException {
>> + return copyLarge(input, output, new byte[bufferSize]);
>> + }
>> +
>> + /**
>> * Copy bytes from a large (over 2GB) <code>InputStream</code> to an
>> * <code>OutputStream</code>.
>> * <p>
>> @@ -1766,7 +1790,7 @@ public class IOUtils {
>> */
>> public static long copyLarge(InputStream input, OutputStream output)
>> throws IOException {
>> - return copyLarge(input, output, new byte[DEFAULT_BUFFER_SIZE]);
>> + return copy(input, output, DEFAULT_BUFFER_SIZE);
>
> Please don't mix changes in a single commit.
>
> AFAICT the above change is nothing to do with IO-353.
It is a refactoring that uses the new method.
Gary
>
>> }
>>
>> /**
>>
>> Modified: commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsCopyTestCase.java
>> URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsCopyTestCase.java?rev=1402280&r1=1402279&r2=1402280&view=diff
>> ==============================================================================
>> --- commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsCopyTestCase.java (original)
>> +++ commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsCopyTestCase.java Thu Oct 25 19:15:57 2012
>> @@ -86,6 +86,39 @@ public class IOUtilsCopyTestCase extends
>> assertEquals(inData.length,count);
>> }
>>
>> + public void testCopy_inputStreamToOutputStreamWithBufferSize() throws Exception {
>> + testCopy_inputStreamToOutputStreamWithBufferSize(1);
>> + testCopy_inputStreamToOutputStreamWithBufferSize(2);
>> + testCopy_inputStreamToOutputStreamWithBufferSize(4);
>> + testCopy_inputStreamToOutputStreamWithBufferSize(8);
>> + testCopy_inputStreamToOutputStreamWithBufferSize(16);
>> + testCopy_inputStreamToOutputStreamWithBufferSize(32);
>> + testCopy_inputStreamToOutputStreamWithBufferSize(64);
>> + testCopy_inputStreamToOutputStreamWithBufferSize(128);
>> + testCopy_inputStreamToOutputStreamWithBufferSize(256);
>> + testCopy_inputStreamToOutputStreamWithBufferSize(512);
>> + testCopy_inputStreamToOutputStreamWithBufferSize(1024);
>> + testCopy_inputStreamToOutputStreamWithBufferSize(2048);
>> + testCopy_inputStreamToOutputStreamWithBufferSize(4096);
>> + testCopy_inputStreamToOutputStreamWithBufferSize(8192);
>> + testCopy_inputStreamToOutputStreamWithBufferSize(16384);
>> + }
>> +
>> + private void testCopy_inputStreamToOutputStreamWithBufferSize(int bufferSize) throws Exception {
>> + InputStream in = new ByteArrayInputStream(inData);
>> + in = new YellOnCloseInputStream(in);
>> +
>> + ByteArrayOutputStream baout = new ByteArrayOutputStream();
>> + OutputStream out = new YellOnFlushAndCloseOutputStream(baout, false, true);
>> +
>> + long count = IOUtils.copy(in, out, bufferSize);
>> +
>> + assertEquals("Not all bytes were read", 0, in.available());
>> + assertEquals("Sizes differ", inData.length, baout.size());
>> + assertTrue("Content differs", Arrays.equals(inData, baout.toByteArray()));
>> + assertEquals(inData.length,count);
>> + }
>> +
>> public void testCopy_inputStreamToOutputStream_nullIn() throws Exception {
>> OutputStream out = new ByteArrayOutputStream();
>> try {
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org