public static class BoundedInputStream.Builder extends BoundedInputStream.AbstractBuilder<BoundedInputStream.Builder>
BoundedInputStream.
By default, a BoundedInputStream is unbound; so make sure to call BoundedInputStream.AbstractBuilder.setMaxCount(long).
You can find out how many bytes this stream has seen so far by calling BoundedInputStream.getCount(). This value reflects bytes read and skipped.
A ServletInputStream can 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 an BoundedInputStream with the
Content-Length sent in the ServletInputStream's header, this stop it from blocking, providing it's been sent with a correct content
length in the first place.
BoundedInputStream s = BoundedInputStream.builder()
.setPath(Paths.get("MyFile.xml"))
.setMaxCount(1024)
.setPropagateClose(false)
.get();
BoundedInputStream s = BoundedInputStream.builder()
.setFile(new File("MyFile.xml"))
.setMaxCount(1024)
.setPropagateClose(false)
.get();
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();
get()| Constructor and Description |
|---|
Builder()
Constructs a new builder of
BoundedInputStream. |
| Modifier and Type | Method and Description |
|---|---|
BoundedInputStream |
get()
Builds a new
BoundedInputStream. |
getCount, getMaxCount, getOnMaxCount, isPropagateClose, setCount, setMaxCount, setOnMaxCount, setPropagateClosegetAfterRead, setAfterReadgetBufferSize, getBufferSizeDefault, getCharSequence, getCharset, getCharsetDefault, getFile, getInputStream, getOpenOptions, getOutputStream, getPath, getRandomAccessFile, getReader, getWriter, setBufferSize, setBufferSize, setBufferSizeChecker, setBufferSizeDefault, setBufferSizeMax, setCharset, setCharset, setCharsetDefault, setOpenOptionscheckOrigin, getOrigin, hasOrigin, newByteArrayOrigin, newCharSequenceOrigin, newFileOrigin, newFileOrigin, newInputStreamOrigin, newOutputStreamOrigin, newPathOrigin, newPathOrigin, newRandomAccessFileOrigin, newRandomAccessFileOrigin, newReaderOrigin, newURIOrigin, newWriterOrigin, setByteArray, setCharSequence, setFile, setFile, setInputStream, setOrigin, setOutputStream, setPath, setPath, setRandomAccessFile, setRandomAccessFile, setReader, setURI, setWriterasThisclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitasSupplier, getUncheckedpublic Builder()
BoundedInputStream.public BoundedInputStream get() throws IOException
BoundedInputStream.
You must set an aspect that supports AbstractStreamBuilder.getInputStream(), otherwise, this method throws an exception.
If you start from an input stream, an exception can't be thrown, and you can call IOSupplier.getUnchecked() instead.
This builder uses the following aspects:
AbstractStreamBuilder.getInputStream() gets the target aspect.ProxyInputStream.AbstractBuilder.getAfterRead()BoundedInputStream.AbstractBuilder.getCount()BoundedInputStream.AbstractBuilder.getMaxCount()BoundedInputStream.AbstractBuilder.getOnMaxCount()BoundedInputStream.AbstractBuilder.isPropagateClose()IllegalStateException - if the origin is null.UnsupportedOperationException - if the origin cannot be converted to an InputStream.IOException - if an I/O error occurs converting to an InputStream using AbstractStreamBuilder.getInputStream().AbstractStreamBuilder.getInputStream(),
IOSupplier.getUnchecked()