You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Nikunj Trivedi (JIRA)" <ji...@apache.org> on 2008/12/05 09:04:44 UTC

[jira] Commented: (IO-137) Added method for getting InputStream from ByteArrayOutputStream & IOUtils avoiding unnecessary array allocation and copy

    [ https://issues.apache.org/jira/browse/IO-137?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12653678#action_12653678 ] 

Nikunj Trivedi commented on IO-137:
-----------------------------------

Thanks Niall,

This solves problem of InputStream buffering. But in case we only have BAOS as source, it will still require buffer copy. 
For safety/consistency, one thought is to have "readOnly" flag for BAOS, which will be set  in 1) setReadOnly() 2) toInputStream() ? 
Then we can make private method to public. I can attach patch if it is agreeable.

> Added method for getting InputStream from ByteArrayOutputStream & IOUtils avoiding unnecessary array allocation and copy
> ------------------------------------------------------------------------------------------------------------------------
>
>                 Key: IO-137
>                 URL: https://issues.apache.org/jira/browse/IO-137
>             Project: Commons IO
>          Issue Type: New Feature
>          Components: Streams/Writers, Utilities
>    Affects Versions: 1.3.2
>         Environment: Any OS with appropriate JVM
>            Reporter: Nikunj Trivedi
>            Assignee: Niall Pemberton
>             Fix For: 2.0
>
>         Attachments: baos_to_inputstream.patch, baos_toIstream.patch
>
>
> Patch inclues following two methods and test cases for both.
> 1) New Method: ByteArrayOutputStream.toInputStream
> ByteArrayOutputStream exposes its byte buffers by toByteArray(), which creates a fresh buffer and copy existing data to it.
> A new method toInputStream() available in patch returns the current contents of baos, as an InputStream, avoiding unnecessary allocation and copying.
> 2) New Method: IOUtils.toFullyBufferedInputStream
> There are situations where the InputStream source is available and it has to be passed to different modules for processing.
> It is needed to fetch the full contents of the InputStream in internal buffer(IOUtils.toByteArray() ), convert this buffer to ByteArrayInputStream and use that stream instead. But this is wasteful since toByteArray() requires one fresh allocation and copy operation.
> New method copies InputStream to ByteArrayOutputStream and returns baos.toInputStream(), avoiding unnecessary memory allocation and copy.
> Testcases are available in respective classes.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.