Class BlobInputStream

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

    public class BlobInputStream
    extends java.io.InputStream
    This is an implementation of an InputStream from a large object.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private long apos
      The absolute position.
      private int bpos
      Position within buffer.
      private int bsize
      The buffer size.
      private byte[] buffer
      Buffer used to improve performance.
      private long limit
      The limit.
      private LargeObject lo
      The parent LargeObject.
      private long mpos
      The mark position.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      Closes this input stream and releases any system resources associated with the stream.
      private LargeObject getLo()  
      void mark​(int readlimit)
      Marks the current position in this input stream.
      boolean markSupported()
      Tests if this input stream supports the mark and reset methods.
      int read()
      The minimum required to implement input stream.
      void reset()
      Repositions this stream to the position at the time the mark method was last called on this input stream.
      • Methods inherited from class java.io.InputStream

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

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

      • apos

        private long apos
        The absolute position.
      • buffer

        private byte[] buffer
        Buffer used to improve performance.
      • bpos

        private int bpos
        Position within buffer.
      • bsize

        private int bsize
        The buffer size.
      • mpos

        private long mpos
        The mark position.
      • limit

        private long limit
        The limit.
    • Constructor Detail

      • BlobInputStream

        public BlobInputStream​(LargeObject lo)
        Parameters:
        lo - LargeObject to read from
      • BlobInputStream

        public BlobInputStream​(LargeObject lo,
                               int bsize)
        Parameters:
        lo - LargeObject to read from
        bsize - buffer size
      • BlobInputStream

        public BlobInputStream​(LargeObject lo,
                               int bsize,
                               long limit)
        Parameters:
        lo - LargeObject to read from
        bsize - buffer size
        limit - max number of bytes to read
    • Method Detail

      • read

        public int read()
                 throws java.io.IOException
        The minimum required to implement input stream.
        Specified by:
        read in class java.io.InputStream
        Throws:
        java.io.IOException
      • close

        public void close()
                   throws java.io.IOException

        Closes this input stream and releases any system resources associated with the stream.

        The close method of InputStream does nothing.

        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 - if an I/O error occurs.
      • mark

        public void mark​(int readlimit)

        Marks the current position in this input stream. A subsequent call to the reset method repositions this stream at the last marked position so that subsequent reads re-read the same bytes.

        The readlimit arguments tells this input stream to allow that many bytes to be read before the mark position gets invalidated.

        The general contract of mark is that, if the method markSupported returns true, the stream somehow remembers all the bytes read after the call to mark and stands ready to supply those same bytes again if and whenever the method reset is called. However, the stream is not required to remember any data at all if more than readlimit bytes are read from the stream before reset is called.

        Marking a closed stream should not have any effect on the stream.

        Overrides:
        mark in class java.io.InputStream
        Parameters:
        readlimit - the maximum limit of bytes that can be read before the mark position becomes invalid.
        See Also:
        InputStream.reset()
      • reset

        public void reset()
                   throws java.io.IOException
        Repositions this stream to the position at the time the mark method was last called on this input stream. NB: If mark is not called we move to the beginning.
        Overrides:
        reset in class java.io.InputStream
        Throws:
        java.io.IOException
        See Also:
        InputStream.mark(int), IOException
      • markSupported

        public boolean markSupported()
        Tests if this input stream supports the mark and reset methods. The markSupported method of InputStream returns false.
        Overrides:
        markSupported in class java.io.InputStream
        Returns:
        true if this true type supports the mark and reset method; false otherwise.
        See Also:
        InputStream.mark(int), InputStream.reset()
      • getLo

        private LargeObject getLo()
                           throws java.io.IOException
        Throws:
        java.io.IOException