Class StorageOutputStream

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private boolean closed  
      private byte[] singleByte  
      private boolean usedUp  
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected StorageOutputStream()
      Sole constructor.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      Closes this output stream.
      Storage toStorage()
      Closes this output stream if it has not already been closed and returns a Storage object which contains the bytes that have been written to this output stream.
      protected abstract Storage toStorage0()
      Has to be implemented by a concrete subclass to create a Storage object from the bytes that have been written to this StorageOutputStream.
      void write​(byte[] buffer)  
      void write​(byte[] buffer, int offset, int length)  
      void write​(int b)  
      protected abstract void write0​(byte[] buffer, int offset, int length)
      Has to implemented by a concrete subclass to write bytes from the given byte array to this StorageOutputStream.
      • Methods inherited from class java.io.OutputStream

        flush, nullOutputStream
      • Methods inherited from class java.lang.Object

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

      • singleByte

        private byte[] singleByte
      • closed

        private boolean closed
      • usedUp

        private boolean usedUp
    • Constructor Detail

      • StorageOutputStream

        protected StorageOutputStream()
        Sole constructor.
    • Method Detail

      • toStorage

        public final Storage toStorage()
                                throws java.io.IOException
        Closes this output stream if it has not already been closed and returns a Storage object which contains the bytes that have been written to this output stream.

        Note that this method may not be invoked a second time. This is because for some implementations it is not possible to create another Storage object that can be read from and deleted independently (e.g. if the implementation writes to a file).

        Returns:
        a Storage object as described above.
        Throws:
        java.io.IOException - if an I/O error occurs.
        java.lang.IllegalStateException - if this method has already been called.
      • write

        public final void write​(int b)
                         throws java.io.IOException
        Specified by:
        write in class java.io.OutputStream
        Throws:
        java.io.IOException
      • write

        public final void write​(byte[] buffer)
                         throws java.io.IOException
        Overrides:
        write in class java.io.OutputStream
        Throws:
        java.io.IOException
      • write

        public final void write​(byte[] buffer,
                                int offset,
                                int length)
                         throws java.io.IOException
        Overrides:
        write in class java.io.OutputStream
        Throws:
        java.io.IOException
      • close

        public void close()
                   throws java.io.IOException
        Closes this output stream. Subclasses that override this method have to invoke super.close().

        This implementation never throws an IOException but a subclass might.

        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Overrides:
        close in class java.io.OutputStream
        Throws:
        java.io.IOException - if an I/O error occurs.
      • write0

        protected abstract void write0​(byte[] buffer,
                                       int offset,
                                       int length)
                                throws java.io.IOException
        Has to implemented by a concrete subclass to write bytes from the given byte array to this StorageOutputStream. This method gets called by write(int), write(byte[]) and write(byte[], int, int). All the required preconditions have already been checked by these methods, including the check if the output stream has already been closed.
        Parameters:
        buffer - buffer containing bytes to write.
        offset - start offset in the buffer.
        length - number of bytes to write.
        Throws:
        java.io.IOException - if an I/O error occurs.
      • toStorage0

        protected abstract Storage toStorage0()
                                       throws java.io.IOException
        Has to be implemented by a concrete subclass to create a Storage object from the bytes that have been written to this StorageOutputStream. This method gets called by toStorage() after the preconditions have been checked. The implementation can also be sure that this methods gets invoked only once.
        Returns:
        a Storage object as described above.
        Throws:
        java.io.IOException - if an I/O error occurs.