Package it.unimi.dsi.fastutil.io
Class FastByteArrayInputStream
- java.lang.Object
-
- java.io.InputStream
-
- it.unimi.dsi.fastutil.io.MeasurableInputStream
-
- it.unimi.dsi.fastutil.io.FastByteArrayInputStream
-
- All Implemented Interfaces:
MeasurableStream
,RepositionableStream
,java.io.Closeable
,java.lang.AutoCloseable
public class FastByteArrayInputStream extends MeasurableInputStream implements RepositionableStream
Simple, fast and repositionable byte-array input stream.Warning: this class implements the correct semantics of
read(byte[], int, int)
as described inInputStream
. The implementation given inByteArrayInputStream
is broken, but it will never be fixed because it's too late.- Author:
- Sebastiano Vigna
-
-
Constructor Summary
Constructors Constructor Description FastByteArrayInputStream(byte[] array)
Creates a new array input stream using a given array.FastByteArrayInputStream(byte[] array, int offset, int length)
Creates a new array input stream using a given array fragment.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
available()
void
close()
Closing a fast byte array input stream has no effect.long
length()
Returns the overall length of this stream (optional operation).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)
Reads bytes from this byte-array input stream as specified inInputStream.read(byte[], int, int)
.void
reset()
long
skip(long n)
-
-
-
Constructor Detail
-
FastByteArrayInputStream
public FastByteArrayInputStream(byte[] array, int offset, int length)
Creates a new array input stream using a given array fragment.- Parameters:
array
- the backing array.offset
- the first valid entry of the array.length
- the number of valid bytes.
-
FastByteArrayInputStream
public FastByteArrayInputStream(byte[] array)
Creates a new array input stream using a given array.- Parameters:
array
- the backing array.
-
-
Method Detail
-
markSupported
public boolean markSupported()
- Overrides:
markSupported
in classjava.io.InputStream
-
reset
public void reset()
- Overrides:
reset
in classjava.io.InputStream
-
close
public void close()
Closing a fast byte array input stream has no effect.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classjava.io.InputStream
-
mark
public void mark(int dummy)
- Overrides:
mark
in classjava.io.InputStream
-
available
public int available()
- Overrides:
available
in classjava.io.InputStream
-
skip
public long skip(long n)
- Overrides:
skip
in classjava.io.InputStream
-
read
public int read()
- Specified by:
read
in classjava.io.InputStream
-
read
public int read(byte[] b, int offset, int length)
Reads bytes from this byte-array input stream as specified inInputStream.read(byte[], int, int)
. Note that the implementation given inByteArrayInputStream.read(byte[], int, int)
will return -1 on a zero-length read at EOF, contrarily to the specification. We won't.- Overrides:
read
in classjava.io.InputStream
-
position
public long position()
Description copied from interface:RepositionableStream
Returns the current stream position.- Specified by:
position
in interfaceMeasurableStream
- Specified by:
position
in interfaceRepositionableStream
- 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 interfaceRepositionableStream
- Parameters:
newPosition
- the new stream position.
-
length
public long length()
Description copied from interface:MeasurableStream
Returns the overall length of this stream (optional operation). In most cases, this will require the stream to perform some extra action, possibly changing the state of the input stream itself (typically, reading all the bytes up to the end, or flushing on output stream). Implementing classes should always document what state will the input stream be in after calling this method, and which kind of exception could be thrown.- Specified by:
length
in interfaceMeasurableStream
-
-