Package com.logicaldoc.util.io
Class LimitedInputStream
- java.lang.Object
-
- java.io.InputStream
-
- java.io.FilterInputStream
-
- com.logicaldoc.util.io.LimitedInputStream
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
public class LimitedInputStream extends FilterInputStream
This is a decorator that limits a given input stream to a maximum size- Since:
- 7.6.3
- Author:
- Marco Meschieri - LogicalDOC
-
-
Constructor Summary
Constructors Constructor Description LimitedInputStream(InputStream in, long limit)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int
available()
void
mark(int readLimit)
int
read()
int
read(byte[] b, int off, int len)
static int
read(InputStream in, byte[] b, int off, int len)
Reads some bytes from an input stream and stores them into the buffer arrayb
.static void
readFully(InputStream in, byte[] b)
Attempts to read enough bytes from the stream to fill the given byte array, with the same behavior asDataInput.readFully(byte[])
.static void
readFully(InputStream in, byte[] b, int off, int len)
Attempts to readlen
bytes from the stream into the given array starting atoff
, with the same behavior asDataInput.readFully(byte[], int, int)
.void
reset()
long
skip(long n)
static void
skipFully(InputStream in, long n)
Discardsn
bytes of data from the input stream.-
Methods inherited from class java.io.FilterInputStream
close, markSupported, read
-
Methods inherited from class java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, transferTo
-
-
-
-
Constructor Detail
-
LimitedInputStream
public LimitedInputStream(InputStream in, long limit)
-
-
Method Detail
-
available
public int available() throws IOException
- Overrides:
available
in classFilterInputStream
- Throws:
IOException
-
mark
public void mark(int readLimit)
- Overrides:
mark
in classFilterInputStream
-
read
public int read() throws IOException
- Overrides:
read
in classFilterInputStream
- Throws:
IOException
-
read
public int read(byte[] b, int off, int len) throws IOException
- Overrides:
read
in classFilterInputStream
- Throws:
IOException
-
reset
public void reset() throws IOException
- Overrides:
reset
in classFilterInputStream
- Throws:
IOException
-
skip
public long skip(long n) throws IOException
- Overrides:
skip
in classFilterInputStream
- Throws:
IOException
-
readFully
public static void readFully(InputStream in, byte[] b) throws IOException
Attempts to read enough bytes from the stream to fill the given byte array, with the same behavior asDataInput.readFully(byte[])
. Does not close the stream.- Parameters:
in
- the input stream to read from.b
- the buffer into which the data is read.- Throws:
EOFException
- if this stream reaches the end before reading all the bytes.IOException
- if an I/O error occurs.
-
readFully
public static void readFully(InputStream in, byte[] b, int off, int len) throws IOException
Attempts to readlen
bytes from the stream into the given array starting atoff
, with the same behavior asDataInput.readFully(byte[], int, int)
. Does not close the stream.- Parameters:
in
- the input stream to read from.b
- the buffer into which the data is read.off
- an int specifying the offset into the data.len
- an int specifying the number of bytes to read.- Throws:
EOFException
- if this stream reaches the end before reading all the bytes.IOException
- if an I/O error occurs.
-
skipFully
public static void skipFully(InputStream in, long n) throws IOException
Discardsn
bytes of data from the input stream. This method will block until the full amount has been skipped. Does not close the stream.- Parameters:
in
- the input stream to read fromn
- the number of bytes to skip- Throws:
EOFException
- if this stream reaches the end before skipping all the bytesIOException
- if an I/O error occurs, or the stream does not support skipping
-
read
public static int read(InputStream in, byte[] b, int off, int len) throws IOException
Reads some bytes from an input stream and stores them into the buffer arrayb
. This method blocks untillen
bytes of input data have been read into the array, or end of file is detected. The number of bytes read is returned, possibly zero. Does not close the stream.A caller can detect EOF if the number of bytes read is less than
len
. All subsequent calls on the same stream will return zero.If
b
is null, aNullPointerException
is thrown. Ifoff
is negative, orlen
is negative, oroff+len
is greater than the length of the arrayb
, then anIndexOutOfBoundsException
is thrown. Iflen
is zero, then no bytes are read. Otherwise, the first byte read is stored into elementb[off]
, the next one intob[off+1]
, and so on. The number of bytes read is, at most, equal tolen
.- Parameters:
in
- the input stream to read fromb
- the buffer into which the data is readoff
- an int specifying the offset into the datalen
- an int specifying the number of bytes to read- Returns:
- the number of bytes read
- Throws:
IOException
- if an I/O error occurs
-
-