Class JoinedInputStream

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    public class JoinedInputStream
    extends java.io.InputStream
    This class allows to join several InputStream's into one.

    Reading from an instance of JoinedInputStream will read each underlying InputStream until it is depleted and then continue with the next one.

    Depleted InputStream's will be closed as soon as possible.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.List<java.io.InputStream> streams  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      JoinedInputStream add​(java.io.InputStream in)
      Add another InputStream.
      void close()  
      private void popStream()
      Remove the current InputStream and close it.
      int read()  
      int read​(byte[] b, int off, int len)  
      • Methods inherited from class java.io.InputStream

        available, mark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, skip, transferTo
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • streams

        private java.util.List<java.io.InputStream> streams
    • Constructor Detail

      • JoinedInputStream

        public JoinedInputStream()
    • Method Detail

      • add

        public JoinedInputStream add​(java.io.InputStream in)
        Add another InputStream.

        It is allowed to add more InputStream's even after reading has started.

        It is illegal to add more streams after the joined stream has been closed.

      • read

        public int read()
                 throws java.io.IOException
        Specified by:
        read in class java.io.InputStream
        Throws:
        java.io.IOException
      • popStream

        private void popStream()
                        throws java.io.IOException
        Remove the current InputStream and close it.
        Throws:
        java.io.IOException
      • read

        public int read​(byte[] b,
                        int off,
                        int len)
                 throws java.io.IOException
        Overrides:
        read in class java.io.InputStream
        Throws:
        java.io.IOException
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Overrides:
        close in class java.io.InputStream
        Throws:
        java.io.IOException