it.unimi.dsi.fastutil.io
Class FastMultiByteArrayInputStream

java.lang.Object
  extended by java.io.InputStream
      extended by it.unimi.dsi.fastutil.io.FastMultiByteArrayInputStream
All Implemented Interfaces:
RepositionableStream, Closeable

public class FastMultiByteArrayInputStream
extends InputStream
implements RepositionableStream

Simple, fast and repositionable byte array input stream that multiplexes its content among several arrays. This class is significantly slower than FastByteArrayInputStream, but it can hold 256 PiB of data. The relevant constructor is FastMultiByteArrayInputStream(InputStream, long), which fetches a stream and loads it into a sequence of byte arrays.

Author:
Sebastiano Vigna, Paolo Boldi s

Field Summary
 byte[][] array
          The array of arrays backing the input stream.
 long length
          The number of valid bytes in array.
static int SLICE_BITS
          The number of bits of an array slice index.
static int SLICE_MASK
          The mask to retrieve a slice offset.
static int SLICE_SIZE
          The maximum length of an array slice.
 
Constructor Summary
FastMultiByteArrayInputStream(byte[] array)
          Creates a new multi-array input stream using a given array.
FastMultiByteArrayInputStream(FastMultiByteArrayInputStream is)
          Creates a new multi-array input stream sharing the backing arrays of another multi-array input stream.
FastMultiByteArrayInputStream(InputStream is, long size)
          Creates a new multi-array input stream loading it from an input stream.
FastMultiByteArrayInputStream(MeasurableInputStream is)
          Creates a new multi-array input stream loading it from a measurable input stream.
 
Method Summary
 int available()
          Returns the number of bytes that can be read (or skipped over) from this input stream without blocking.
 void close()
          Closing a fast byte array input stream has no effect.
 void mark(int dummy)
           
 boolean markSupported()
           
 long position()
          Returns the current stream position.
 void position(long newPosition)
          Sets the current stream position.
 int read()
           
 int read(byte[] b, int offset, int length)
           
 void reset()
           
 long skip(long n)
           
 
Methods inherited from class java.io.InputStream
read
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SLICE_BITS

public static final int SLICE_BITS
The number of bits of an array slice index.

See Also:
Constant Field Values

SLICE_SIZE

public static final int SLICE_SIZE
The maximum length of an array slice.

See Also:
Constant Field Values

SLICE_MASK

public static final int SLICE_MASK
The mask to retrieve a slice offset.

See Also:
Constant Field Values

array

public byte[][] array
The array of arrays backing the input stream.


length

public long length
The number of valid bytes in array.

Constructor Detail

FastMultiByteArrayInputStream

public FastMultiByteArrayInputStream(MeasurableInputStream is)
                              throws IOException
Creates a new multi-array input stream loading it from a measurable input stream.

Parameters:
is - the input stream that will fill the array.
Throws:
IOException

FastMultiByteArrayInputStream

public FastMultiByteArrayInputStream(InputStream is,
                                     long size)
                              throws IOException
Creates a new multi-array input stream loading it from an input stream.

Parameters:
is - the input stream that will fill the array.
size - the number of bytes to be read from is.
Throws:
IOException

FastMultiByteArrayInputStream

public FastMultiByteArrayInputStream(FastMultiByteArrayInputStream is)
Creates a new multi-array input stream sharing the backing arrays of another multi-array input stream.

Parameters:
is - the multi-array input stream to replicate.

FastMultiByteArrayInputStream

public FastMultiByteArrayInputStream(byte[] array)
Creates a new multi-array input stream using a given array.

Parameters:
array - the backing array.
Method Detail

markSupported

public boolean markSupported()
Overrides:
markSupported in class InputStream

reset

public void reset()
Overrides:
reset in class InputStream

close

public void close()
Closing a fast byte array input stream has no effect.

Specified by:
close in interface Closeable
Overrides:
close in class InputStream

mark

public void mark(int dummy)
Overrides:
mark in class InputStream

available

public int available()
Returns the number of bytes that can be read (or skipped over) from this input stream without blocking.

Note that this number may be smaller than the number of bytes actually available from the stream if this number exceeds Integer.MAX_VALUE.

Overrides:
available in class InputStream
Returns:
the minimum among the number of available bytes and Integer.MAX_VALUE.

skip

public long skip(long n)
Overrides:
skip in class InputStream

read

public int read()
Specified by:
read in class InputStream

read

public int read(byte[] b,
                int offset,
                int length)
Overrides:
read in class InputStream

position

public long position()
Description copied from interface: RepositionableStream
Returns the current stream position.

Specified by:
position in interface RepositionableStream
Returns:
the current stream position.

position

public void position(long newPosition)
Description copied from interface: RepositionableStream
Sets the current stream position.

Specified by:
position in interface RepositionableStream
Parameters:
newPosition - the new stream position.