A {@link ContentProvider} for an {@link InputStream}.
The input stream is read once and therefore fully consumed. Invocations to the {@link #iterator()} method after the first will return an "empty" iteratorbecause the stream has been consumed on the first invocation.
However, it is possible for subclasses to override {@link #onRead(byte[],int,int)} to copythe content read from the stream to another location (for example a file), and be able to support multiple invocations of {@link #iterator()}, returning the iterator provided by this class on the first invocation, and an iterator on the bytes copied to the other location for subsequent invocations.
It is possible to specify, at the constructor, a buffer size used to read content from the stream, by default 4096 bytes.
The {@link InputStream} passed to the constructor is by default closed when is it fullyconsumed (or when an exception is thrown while reading it), unless otherwise specified to the {@link #InputStreamContentProvider(java.io.InputStream,int,boolean) constructor}.