commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Henri Yandell (JIRA)" <>
Subject [jira] [Commented] (IO-400) IOUtils: add support for copying from large byte buffers
Date Wed, 16 Oct 2013 08:05:42 GMT


Henri Yandell commented on IO-400:

Moved over from Lang. I think this was in the wrong project.

> IOUtils: add support for copying from large byte buffers
> --------------------------------------------------------
>                 Key: IO-400
>                 URL:
>             Project: Commons IO
>          Issue Type: New Feature
>            Reporter: Sebb
> Trying to write a large byte array to a FileOutputStream may cause OOME.
> This is because such output requires the use of native code, and native code may need
to copy the array in order to access it safely, see:
> It might therefore be useful to have a method which writes from the byte array in chunks.
One can create a ByteArrayInputStream from the input, and then use one of the copy() methods,
but that creates an unnecessary array buffer (albeit only 4k).
> There are already write methods which copy byte[] to OutputStream and char[] to Writer.
> Some or all of these could be converted to use chunked output, or there could be new
methods to implement the chunking.
> Here is a sample implementation of a stand-alone method:
> {code}
> public static void writeChunked(byte[] data, OutputStream output) throws IOException
>     int bytes = data.length;
>     int offset = 0;
>     while(bytes > 0) {
>         int chunk = Math.min(bytes, DEFAULT_BUFFER_SIZE);
>         output.write(data, offset, chunk);
>         bytes -= chunk;
>         offset += chunk;
>     }
> }
> {code}

This message was sent by Atlassian JIRA

View raw message