A readable source of bytes, such as a file. Unlike an {@link InputStream}, a {@code ByteSource} is not an open, stateful stream for input that can be read and closed.Instead, it is an immutable
supplier of {@code InputStream} instances.
{@code ByteSource} provides two kinds of methods:
- Methods that return a stream: These methods should return a new, independent instance each time they are called. The caller is responsible for ensuring that the returned stream is closed.
- Convenience methods: These are implementations of common operations that are typically implemented by opening a stream using one of the methods in the first category, doing something and finally closing the stream that was opened.
@since 14.0
@author Colin Decker