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
,Closeable
,AutoCloseable
Simple, fast and repositionable byte-array input stream.
Warning: this class implements the correct semantics
of read(byte[], int, int)
as described in InputStream
.
The implementation given in ByteArrayInputStream
is broken,
but it will never be fixed because it's too late.
- Author:
- Sebastiano Vigna
-
Field Summary
-
Constructor Summary
ConstructorDescriptionFastByteArrayInputStream
(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
Modifier and TypeMethodDescriptionint
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
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) Methods inherited from class java.io.InputStream
nullInputStream, read, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
-
Field Details
-
array
public byte[] arrayThe array backing the input stream. -
offset
public int offsetThe first valid entry. -
length
public int length
-
-
Constructor Details
-
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 Details
-
markSupported
public boolean markSupported()- Overrides:
markSupported
in classInputStream
-
reset
public void reset()- Overrides:
reset
in classInputStream
-
close
public void close()Closing a fast byte array input stream has no effect.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classInputStream
-
mark
public void mark(int dummy) - Overrides:
mark
in classInputStream
-
available
public int available()- Overrides:
available
in classInputStream
-
skip
public long skip(long n) - Overrides:
skip
in classInputStream
-
read
public int read()- Specified by:
read
in classInputStream
-
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 classInputStream
-
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
-