org.entityfs.util.io
Class RangeInputStream

java.lang.Object
  extended by java.io.InputStream
      extended by org.entityfs.util.io.RangeInputStream
All Implemented Interfaces:
Closeable

public class RangeInputStream
extends InputStream

This InputStream operates on a range of data in a RandomAccess object. It starts to read data from the lower limit, and continues until it reaches the upper limit.

Since:
1.1
Author:
Karl Gustafsson
See Also:
RangeRandomAccess
In_jar:
entityfs-core

Constructor Summary
RangeInputStream(RandomAccess ra, long lowerLimit, long upperLimit)
          Create a new RangeInputStream.
 
Method Summary
 int available()
           
 void close()
           
 int read()
           
 int read(byte[] barr)
           
 int read(byte[] barr, int offset, int length)
           
 long skip(long n)
           
 
Methods inherited from class java.io.InputStream
mark, markSupported, reset
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RangeInputStream

public RangeInputStream(RandomAccess ra,
                        long lowerLimit,
                        long upperLimit)
                 throws IllegalArgumentException
Create a new RangeInputStream. The amount of data available in the stream is upperLimit - lowerLimit + 1 bytes.

Parameters:
ra - The RandomAccess to read data from. No other object should manipulate this object while this object is active. The RandomAccess is closed when this object is closed.
lowerLimit - The start position in the RandomAccess where this object starts to read data from.
upperLimit - The upper limit. This object will read data until it reaches the upper limit position.
Throws:
IllegalArgumentException - If lowerLimit is less than zero, if the upperLimit is less than the lowerLimit or if the upper limit is beyond the end of the file.
Method Detail

read

public int read()
         throws IOException
Specified by:
read in class InputStream
Throws:
IOException

read

public int read(byte[] barr)
         throws IOException
Overrides:
read in class InputStream
Throws:
IOException

read

public int read(byte[] barr,
                int offset,
                int length)
         throws IOException
Overrides:
read in class InputStream
Throws:
IOException

available

public int available()
              throws IOException
Overrides:
available in class InputStream
Throws:
IOException

skip

public long skip(long n)
          throws IOException
Overrides:
skip in class InputStream
Throws:
IOException

close

public void close()
           throws IOException
Specified by:
close in interface Closeable
Overrides:
close in class InputStream
Throws:
IOException