Class BoundedInputStream
- java.lang.Object
 - 
- java.io.InputStream
 - 
- java.io.FilterInputStream
 - 
- org.apache.commons.io.input.ProxyInputStream
 - 
- org.apache.commons.io.input.BoundedInputStream
 
 
 
 
 
- 
- All Implemented Interfaces:
 java.io.Closeable,java.lang.AutoCloseable
- Direct Known Subclasses:
 BoundedInputStream
public class BoundedInputStream extends ProxyInputStream
Reads bytes up to a maximum count and stops once reached.To build an instance, see
BoundedInputStream.AbstractBuilder.By default, a
BoundedInputStreamis unbound; so make sure to callBoundedInputStream.AbstractBuilder.setMaxCount(long).You can find out how many bytes this stream has seen so far by calling
getCount(). This value reflects bytes read and skipped.Using a ServletInputStream
A
ServletInputStreamcan block if you try to read content that isn't there because it doesn't know whether the content hasn't arrived yet or whether the content has finished. Initialize anBoundedInputStreamwith theContent-Lengthsent in theServletInputStream's header, this stop it from blocking, providing it's been sent with a correct content length in the first place.Using NIO
BoundedInputStream s = BoundedInputStream.builder() .setPath(Paths.get("MyFile.xml")) .setMaxCount(1024) .setPropagateClose(false) .get();Using IO
BoundedInputStream s = BoundedInputStream.builder() .setFile(new File("MyFile.xml")) .setMaxCount(1024) .setPropagateClose(false) .get();Counting Bytes
You can set the running count when building, which is most useful when starting from another stream:
InputStream in = ...; BoundedInputStream s = BoundedInputStream.builder() .setInputStream(in) .setCount(12) .setMaxCount(1024) .setPropagateClose(false) .get();- Since:
 - 2.0
 - See Also:
 BoundedInputStream.Builder
 
- 
- 
Nested Class Summary
Nested Classes Modifier and Type Class Description static classBoundedInputStream.BuilderBuilds a newBoundedInputStream. 
- 
Constructor Summary
Constructors Constructor Description BoundedInputStream(java.io.InputStream in)Deprecated.UseIOSupplier.get().BoundedInputStream(java.io.InputStream inputStream, long maxCount)Deprecated.UseIOSupplier.get(). 
- 
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description intavailable()Invokes the delegate'savailable()method.static BoundedInputStream.Builderbuilder()Constructs a newBoundedInputStream.AbstractBuilder.voidclose()longgetCount()Gets the count of bytes read.longgetMaxCount()Gets the max count of bytes to read.longgetMaxLength()Deprecated.UsegetMaxCount().longgetRemaining()Gets how many bytes remain to read.booleanisPropagateClose()Tests whether theclose()method should propagate to the underlingInputStream.voidmark(int readLimit)Invokes the delegate'sInputStream.mark(int)method.booleanmarkSupported()Invokes the delegate'sInputStream.markSupported()method.intread()Invokes the delegate'sInputStream.read()method if the current position is less than the limit.intread(byte[] b)Invokes the delegate'sInputStream.read(byte[])method.intread(byte[] b, int off, int len)Invokes the delegate'sInputStream.read(byte[], int, int)method.voidreset()Invokes the delegate'sInputStream.reset()method.voidsetPropagateClose(boolean propagateClose)Deprecated.UseBoundedInputStream.AbstractBuilder.setPropagateClose(boolean).longskip(long n)Invokes the delegate'sInputStream.skip(long)method.java.lang.StringtoString()Invokes the delegate'sObject.toString()method.- 
Methods inherited from class org.apache.commons.io.input.ProxyInputStream
unwrap 
 - 
 
 - 
 
- 
- 
Constructor Detail
- 
BoundedInputStream
@Deprecated public BoundedInputStream(java.io.InputStream in)
Deprecated.UseIOSupplier.get().Constructs a newBoundedInputStreamthat wraps the given input stream and is unlimited.- Parameters:
 in- The wrapped input stream.
 
- 
BoundedInputStream
@Deprecated public BoundedInputStream(java.io.InputStream inputStream, long maxCount)Deprecated.UseIOSupplier.get().Constructs a newBoundedInputStreamthat wraps the given input stream and limits it to a certain size.- Parameters:
 inputStream- The wrapped input stream.maxCount- The maximum number of bytes to return.
 
 - 
 
- 
Method Detail
- 
builder
public static BoundedInputStream.Builder builder()
Constructs a newBoundedInputStream.AbstractBuilder.- Returns:
 - a new 
BoundedInputStream.AbstractBuilder. - Since:
 - 2.16.0
 
 
- 
available
public int available() throws java.io.IOExceptionInvokes the delegate'savailable()method.- Overrides:
 availablein classProxyInputStream- Returns:
 - the number of available bytes
 - Throws:
 java.io.IOException- if an I/O error occurs.
 
- 
close
public void close() throws java.io.IOException- Specified by:
 closein interfacejava.lang.AutoCloseable- Specified by:
 closein interfacejava.io.Closeable- Overrides:
 closein classProxyInputStream- Throws:
 java.io.IOException- if an I/O error occurs.
 
- 
getCount
public long getCount()
Gets the count of bytes read.- Returns:
 - The count of bytes read.
 - Since:
 - 2.12.0
 
 
- 
getMaxCount
public long getMaxCount()
Gets the max count of bytes to read.- Returns:
 - The max count of bytes to read.
 - Since:
 - 2.16.0
 
 
- 
getMaxLength
@Deprecated public long getMaxLength()
Deprecated.UsegetMaxCount().Gets the max count of bytes to read.- Returns:
 - The max count of bytes to read.
 - Since:
 - 2.12.0
 
 
- 
getRemaining
public long getRemaining()
Gets how many bytes remain to read.- Returns:
 - bytes how many bytes remain to read.
 - Since:
 - 2.16.0
 
 
- 
isPropagateClose
public boolean isPropagateClose()
Tests whether theclose()method should propagate to the underlingInputStream.- Returns:
 trueif callingclose()propagates to theclose()method of the underlying stream orfalseif it does not.
 
- 
mark
public void mark(int readLimit)
Invokes the delegate'sInputStream.mark(int)method.- Overrides:
 markin classProxyInputStream- Parameters:
 readLimit- read ahead limit
 
- 
markSupported
public boolean markSupported()
Invokes the delegate'sInputStream.markSupported()method.- Overrides:
 markSupportedin classProxyInputStream- Returns:
 - true if mark is supported, otherwise false
 
 
- 
read
public int read() throws java.io.IOExceptionInvokes the delegate'sInputStream.read()method if the current position is less than the limit.- Overrides:
 readin classProxyInputStream- Returns:
 - the byte read or -1 if the end of stream or the limit has been reached.
 - Throws:
 java.io.IOException- if an I/O error occurs.
 
- 
read
public int read(byte[] b) throws java.io.IOExceptionInvokes the delegate'sInputStream.read(byte[])method.- Overrides:
 readin classProxyInputStream- Parameters:
 b- the buffer to read the bytes into- Returns:
 - the number of bytes read or -1 if the end of stream or the limit has been reached.
 - Throws:
 java.io.IOException- if an I/O error occurs.
 
- 
read
public int read(byte[] b, int off, int len) throws java.io.IOExceptionInvokes the delegate'sInputStream.read(byte[], int, int)method.- Overrides:
 readin classProxyInputStream- Parameters:
 b- the buffer to read the bytes intooff- The start offsetlen- The number of bytes to read- Returns:
 - the number of bytes read or -1 if the end of stream or the limit has been reached.
 - Throws:
 java.io.IOException- if an I/O error occurs.
 
- 
reset
public void reset() throws java.io.IOExceptionInvokes the delegate'sInputStream.reset()method.- Overrides:
 resetin classProxyInputStream- Throws:
 java.io.IOException- if an I/O error occurs.
 
- 
setPropagateClose
@Deprecated public void setPropagateClose(boolean propagateClose)
Deprecated.UseBoundedInputStream.AbstractBuilder.setPropagateClose(boolean).Sets whether theclose()method should propagate to the underlingInputStream.- Parameters:
 propagateClose-trueif callingclose()propagates to theclose()method of the underlying stream orfalseif it does not.
 
- 
skip
public long skip(long n) throws java.io.IOExceptionInvokes the delegate'sInputStream.skip(long)method.- Overrides:
 skipin classProxyInputStream- Parameters:
 n- the number of bytes to skip- Returns:
 - the actual number of bytes skipped
 - Throws:
 java.io.IOException- if an I/O error occurs.
 
- 
toString
public java.lang.String toString()
Invokes the delegate'sObject.toString()method.- Overrides:
 toStringin classjava.lang.Object- Returns:
 - the delegate's 
Object.toString() 
 
 - 
 
 -