[
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.