org.apache.commons.io.output
public class DeferredFileOutputStream extends ThresholdingOutputStream
This class originated in FileUpload processing. In this use case, you do not know in advance the size of the file being uploaded. If the file is small you want to store it in memory (for speed), but if the file is large you want to store it to file (to avoid memory issues).
Version: $Id: DeferredFileOutputStream.java 606381 2007-12-22 02:03:16Z ggregory $
Field Summary | |
---|---|
boolean | closed
True when close() has been called successfully. |
OutputStream | currentOutputStream
The output stream to which data will be written at any given time. |
File | directory
The directory to use for temporary files. |
ByteArrayOutputStream | memoryOutputStream
The output stream to which data will be written prior to the theshold
being reached. |
File | outputFile
The file to which output will be directed if the threshold is exceeded. |
String | prefix
The temporary file prefix. |
String | suffix
The temporary file suffix. |
Constructor Summary | |
---|---|
DeferredFileOutputStream(int threshold, File outputFile)
Constructs an instance of this class which will trigger an event at the
specified threshold, and save data to a file beyond that point.
| |
DeferredFileOutputStream(int threshold, String prefix, String suffix, File directory)
Constructs an instance of this class which will trigger an event at the
specified threshold, and save data to a temporary file beyond that point.
|
Method Summary | |
---|---|
void | close()
Closes underlying output stream, and mark this as closed
|
byte[] | getData()
Returns the data for this output stream as an array of bytes, assuming
that the data has been retained in memory. |
File | getFile()
Returns either the output file specified in the constructor or
the temporary file created or null.
|
protected OutputStream | getStream()
Returns the current output stream. |
boolean | isInMemory()
Determines whether or not the data for this output stream has been
retained in memory.
|
protected void | thresholdReached()
Switches the underlying output stream from a memory based stream to one
that is backed by disk. |
void | writeTo(OutputStream out)
Writes the data from this output stream to the specified output stream,
after it has been closed.
|
memoryOutputStream
or
diskOutputStream
.Parameters: threshold The number of bytes at which to trigger an event. outputFile The file to which data is saved beyond the threshold.
Parameters: threshold The number of bytes at which to trigger an event. prefix Prefix to use for the temporary file. suffix Suffix to use for the temporary file. directory Temporary file directory.
Since: Commons IO 1.4
Throws: IOException if an error occurs.
null
.
Returns: The data for this output stream, or null
if no such
data is available.
If the constructor specifying the file is used then it returns that same output file, even when threashold has not been reached.
If constructor specifying a temporary file prefix/suffix is used
then the temporary file created once the threashold is reached is returned
If the threshold was not reached then null
is returned.
Returns: The file for this output stream, or null
if no such
file exists.
Returns: The underlying output stream.
Throws: IOException if an error occurs.
Returns: true
if the data is available in memory;
false
otherwise.
Throws: IOException if an error occurs.
Parameters: out output stream to write to.
Throws: IOException if this stream is not yet closed or an error occurs.