Interface DataFetcher
-
- All Known Implementing Classes:
AbstractBufferedDataFetcher
,AbstractDataFetcher
,BufferedDataFetcher
public interface DataFetcher
ADataFetcher
can fetch the entire content of a givenInputStream
into a freshbyte[]
or copy it into a givenOutputStream
.It is, among other things, intended as a replacement for
IOUtils.toByteArray()
to perform the everyday and menial task of reading an entireInputStream
.Since the class
sun.misc.IOUtils
, which provides this functionality, is not a part of the official Java specification, usages of this class will usually yield a compiler warning like "The type 'IOUtils' is not API
" and might break at runtime, if a runtime environment other than the Oracle JRE is used.All methods take optional parameters to specify the buffer size and to specify, whether the provided streams should be closed afterwards. This allows to write compact code like
{ foo.setContent(fetcher.fetch(new FileInputStream(file), true)); }
instead of unnecessarily verbose code like{ InputStream in = new FileInputStream(file); foo.setContent(fetcher.fetch(in)); in.close(); }
- Since:
- 4.0.0
- Author:
- Torsten Krause (tk at markenwerk dot net)
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
copy(InputStream in, OutputStream out)
Copies the content of a givenInputStream
into a givenOutputStream
.void
copy(InputStream in, OutputStream out, boolean closeIn, boolean closeOut)
Copies the content of a givenInputStream
into a givenOutputStream
.void
copy(InputStream in, OutputStream out, DataFetchProgressListener listener)
Copies the content of a givenInputStream
into a givenOutputStream
.void
copy(InputStream in, OutputStream out, DataFetchProgressListener listener, boolean closeIn, boolean closeOut)
Copies the content of a givenInputStream
into a givenOutputStream
.byte[]
fetch(InputStream in)
Fetches the content of a givenInputStream
into a fresh byte[].byte[]
fetch(InputStream in, boolean close)
Fetches the content of a givenInputStream
into a fresh byte[].byte[]
fetch(InputStream in, DataFetchProgressListener listener)
Fetches the content of a givenInputStream
into a fresh byte[].byte[]
fetch(InputStream in, DataFetchProgressListener listener, boolean close)
Fetches the content of a givenInputStream
into a fresh byte[].
-
-
-
Method Detail
-
fetch
byte[] fetch(InputStream in) throws DataFetchException
Fetches the content of a givenInputStream
into a fresh byte[].See
copy(InputStream, OutputStream, boolean, boolean)
for the handling of missing or invalid arguments.- Parameters:
in
- TheInputStream
to read from.- Returns:
- A new
byte[]
, containing the content of the givenInputStream
. - Throws:
DataFetchException
- If anything went wrong while reading from the givenInputStream
.
-
fetch
byte[] fetch(InputStream in, boolean close) throws DataFetchException
Fetches the content of a givenInputStream
into a fresh byte[].See
copy(InputStream, OutputStream, boolean, boolean)
for the handling of missing or invalid arguments.- Parameters:
in
- TheInputStream
to read from.close
- Whether to close the givenInputStream
, after reading from it.- Returns:
- A new
byte[]
, containing the content of the givenInputStream
. - Throws:
DataFetchException
- If anything went wrong while reading from the givenInputStream
.FetchExceptions
thrown while trying to close the givenInputStream
, if requested, are ignored.
-
fetch
byte[] fetch(InputStream in, DataFetchProgressListener listener, boolean close) throws DataFetchException
Fetches the content of a givenInputStream
into a fresh byte[].See
copy(InputStream, OutputStream, boolean, boolean)
for the handling of missing or invalid arguments.- Parameters:
in
- TheInputStream
to read from.listener
- TheDataFetchProgressListener
to report to.close
- Whether to close the givenInputStream
, after reading from it.- Returns:
- A new
byte[]
, containing the content of the givenInputStream
. - Throws:
DataFetchException
- If anything went wrong while reading from the givenInputStream
.FetchExceptions
thrown while trying to close the givenInputStream
, if requested, are ignored.
-
fetch
byte[] fetch(InputStream in, DataFetchProgressListener listener) throws DataFetchException
Fetches the content of a givenInputStream
into a fresh byte[].See
copy(InputStream, OutputStream, boolean, boolean)
for the handling of missing or invalid arguments.- Parameters:
in
- TheInputStream
to read from.listener
- TheDataFetchProgressListener
to report to.- Returns:
- A new
byte[]
, containing the content of the givenInputStream
. - Throws:
DataFetchException
- If anything went wrong while reading from the givenInputStream
.
-
copy
void copy(InputStream in, OutputStream out) throws DataFetchException
Copies the content of a givenInputStream
into a givenOutputStream
.See
copy(InputStream, OutputStream, boolean, boolean)
for the handling of missing or invalid arguments.- Parameters:
in
- TheInputStream
to read from.out
- TheOutputStream
to write to.- Throws:
DataFetchException
- If anything went wrong while reading from the givenInputStream
or writing to the givenOutputStream
.
-
copy
void copy(InputStream in, OutputStream out, boolean closeIn, boolean closeOut) throws DataFetchException
Copies the content of a givenInputStream
into a givenOutputStream
.Missing or invalid arguments are handled gracefully with the following behaviour.
A
null
is given as anInputStream
, it is simply ignored and handled as if there was nothing to read. IfcloseOut
is true, the givenOutputStream
will be closed anywayA
null
is given as anOutputStream
, it is simply ignored, but the content of givenInputStream
is fetched anyway. IfcloseIn
is true, the givenInputStream
will be closed anyway- Parameters:
in
- TheInputStream
to read from.out
- TheOutputStream
to write to.closeIn
- Whether to close the givenInputStream
, after reading from it.closeOut
- Whether to close the givenOutputStream
, after writing to it.- Throws:
DataFetchException
- If anything went wrong while reading from the givenInputStream
or writing to the givenOutputStream
.FetchExceptions
thrown while trying to close one of the given streams, if requested, are ignored.
-
copy
void copy(InputStream in, OutputStream out, DataFetchProgressListener listener) throws DataFetchException
Copies the content of a givenInputStream
into a givenOutputStream
.See
copy(InputStream, OutputStream, boolean, boolean)
for the handling of missing or invalid arguments.- Parameters:
in
- TheInputStream
to read from.out
- TheOutputStream
to write to.listener
- TheDataFetchProgressListener
to report to.- Throws:
DataFetchException
- If anything went wrong while reading from the givenInputStream
or writing to the givenOutputStream
.
-
copy
void copy(InputStream in, OutputStream out, DataFetchProgressListener listener, boolean closeIn, boolean closeOut) throws DataFetchException
Copies the content of a givenInputStream
into a givenOutputStream
.Missing or invalid arguments are handled gracefully with the following behaviour.
A
null
is given as anInputStream
, it is simply ignored and handled as if there was nothing to read. IfcloseOut
is true, the givenOutputStream
will be closed anywayA
null
is given as anOutputStream
, it is simply ignored, but the content of givenInputStream
is fetched anyway. IfcloseIn
is true, the givenInputStream
will be closed anyway- Parameters:
in
- TheInputStream
to read from.out
- TheOutputStream
to write to.listener
- TheDataFetchProgressListener
to report to.closeIn
- Whether to close the givenInputStream
, after reading from it.closeOut
- Whether to close the givenOutputStream
, after writing to it.- Throws:
DataFetchException
- If anything went wrong while reading from the givenInputStream
or writing to the givenOutputStream
.FetchExceptions
thrown while trying to close one of the given streams, if requested, are ignored.
-
-