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