Class RepeatableInputStream
- All Implemented Interfaces:
Closeable,Serializable,AutoCloseable,Repeatable
RepeatableInputStream adds functionality to another input stream,
the ability to read repeatedly.
By repeatable-read we mean, after close(), the next invocation of
read() will re-open the input stream.
RepeatableInputStream actually creates a temporary space
to buffer the content, so it can be re-opened again after closed.
Notice that the temporary space (a.k.a., the buffered input stream)
is never closed until garbage-collected.
If the content size of the given input stream is smaller than
the value specified in the system property called
"org.zkoss.io.memoryLimitSize", the content will be buffered in
the memory. If the size exceeds, the content will be buffered in
a temporary file. By default, it is 512KB.
Note: the maximal value is Integer.MAX_VALUE
If the content size of the given input stream is larger than
the value specified in the system property called
"org.zkoss.io.bufferLimitSize", the content won't be buffered,
and it means the read is not repeatable. By default, it is 20MB.
Note: the maximal value is Integer.MAX_VALUE
- Since:
- 3.0.4
- Author:
- jumperchen, tomyeh
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Closes the current access, and the next call ofclose()re-opens the buffered input stream.static InputStreamgetInstance(File file) Returns an input stream of a file that can be read repeatedly.static InputStreamReturns an input stream that can be read repeatedly, or null if the given input stream is null.static InputStreamgetInstance(String filename) Returns an input stream of a file that can be read repeatedly.static InputStreamgetInstance(URL url) Returns an input stream of the resource of the given URL that can be read repeatedly.intread()intread(byte[] b, int off, int len) Methods inherited from class java.io.InputStream
available, mark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, skip, skipNBytes, transferTo
-
Method Details
-
getInstance
Returns an input stream that can be read repeatedly, or null if the given input stream is null. Note: the returned input stream encapsulates the given input stream, rd (a.k.a., the buffered input stream) to adds the functionality to re-opens the input stream onceclose()is called.By repeatable-read we mean, after
close(), the next invocation ofread()will re-open the input stream.Use this method instead of instantiating
RepeatableInputStreamwith the constructor.- See Also:
-
getInstance
Returns an input stream of a file that can be read repeatedly. Note: it assumes the file is binary (rather than text).By repeatable-read we mean, after
close(), the next invocation ofread()will re-open the input stream.Note: it is efficient since we don't have to buffer the content of the file to make it repeatable-read.
- Throws:
IllegalArgumentException- if file is null.FileNotFoundException- if file not found- See Also:
-
getInstance
Returns an input stream of a file that can be read repeatedly. Note: it assumes the file is binary (rather than text).By repeatable-read we mean, after
close(), the next invocation ofread()will re-open the input stream.Note: it is efficient since we don't have to buffer the content of the file to make it repeatable-read.
- Throws:
IllegalArgumentException- if file is null.FileNotFoundException- See Also:
-
getInstance
Returns an input stream of the resource of the given URL that can be read repeatedly. Note: it assumes the resource is binary (rather than text).By repeatable-read we mean, after
close(), the next invocation ofread()will re-open the input stream.Note: it is efficient since we don't have to buffer the content of the resource to make it repeatable-read.
- Throws:
IllegalArgumentException- if url is null.- See Also:
-
read
- Specified by:
readin classInputStream- Throws:
IOException
-
read
- Overrides:
readin classInputStream- Throws:
IOException
-
close
Closes the current access, and the next call ofclose()re-opens the buffered input stream.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classInputStream- Throws:
IOException
-