Uploaded image for project: 'Commons IO'
  1. Commons IO
  2. IO-137

Added method for getting InputStream from ByteArrayOutputStream & IOUtils avoiding unnecessary array allocation and copy

    XMLWordPrintableJSON

    Details

    • Type: New Feature
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.3.2
    • Fix Version/s: 2.0
    • Component/s: Streams/Writers, Utilities
    • Labels:
      None
    • Environment:

      Any OS with appropriate JVM

      Description

      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.

        Attachments

        1. baos_toIstream.patch
          6 kB
          Nikunj Trivedi
        2. baos_to_inputstream.patch
          6 kB
          Nikunj Trivedi

          Issue Links

            Activity

              People

              • Assignee:
                niallp Niall Pemberton
                Reporter:
                nikunj_trivedi Nikunj Trivedi
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: