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 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
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
Modifier and Type Method Description intavailable()voidclose()Closing a fast byte array input stream has no effect.longlength()Returns the overall length of this stream (optional operation).voidmark(int dummy)booleanmarkSupported()longposition()Returns the current stream position.voidposition(long newPosition)Sets the current stream position.intread()intread(byte[] b, int offset, int length)Reads bytes from this byte-array input stream as specified inInputStream.read(byte[], int, int).voidreset()longskip(long n)Methods inherited from class java.io.InputStream
nullInputStream, read, readAllBytes, readNBytes, readNBytes, skipNBytes, transferToMethods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
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:
markSupportedin classjava.io.InputStream
-
reset
public void reset()- Overrides:
resetin classjava.io.InputStream
-
close
public void close()Closing a fast byte array input stream has no effect.- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Overrides:
closein classjava.io.InputStream
-
mark
public void mark(int dummy)- Overrides:
markin classjava.io.InputStream
-
available
public int available()- Overrides:
availablein classjava.io.InputStream
-
skip
public long skip(long n)- Overrides:
skipin classjava.io.InputStream
-
read
public int read()- Specified by:
readin 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:
readin classjava.io.InputStream
-
position
public long position()Description copied from interface:RepositionableStreamReturns the current stream position.- Specified by:
positionin interfaceMeasurableStream- Specified by:
positionin interfaceRepositionableStream- Returns:
- the current stream position.
-
position
public void position(long newPosition)Description copied from interface:RepositionableStreamSets the current stream position.- Specified by:
positionin interfaceRepositionableStream- Parameters:
newPosition- the new stream position.
-
length
public long length()Description copied from interface:MeasurableStreamReturns 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:
lengthin interfaceMeasurableStream
-