Class OffloadingOutputStream

java.lang.Object
java.io.OutputStream
org.apache.commons.io.output.ThresholdingOutputStream
org.codehaus.plexus.archiver.zip.OffloadingOutputStream
All Implemented Interfaces:
Closeable, Flushable, AutoCloseable

class OffloadingOutputStream extends org.apache.commons.io.output.ThresholdingOutputStream
Offloads to disk when a given memory consumption has been reached
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private OutputStream
    The output stream to which data will be written at any given time.
    The output stream to which data will be written prior to the theshold being reached.
    private Path
    The path to which output will be directed if the threshold is exceeded.
    private final String
    The temporary file prefix.
    private final String
    The temporary file suffix.
  • Constructor Summary

    Constructors
    Constructor
    Description
    OffloadingOutputStream(int threshold, String prefix, String suffix)
    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

    Modifier and Type
    Method
    Description
    void
    Closes underlying output stream.
    byte[]
    Returns the data for this output stream as an array of bytes, assuming that the data has been retained in memory.
    Returns either the output file specified in the constructor or the temporary file created or null.
     
    protected OutputStream
    Returns the current output stream.
    protected void
    Switches the underlying output stream from a memory based stream to one that is backed by disk.

    Methods inherited from class org.apache.commons.io.output.ThresholdingOutputStream

    checkThreshold, flush, getByteCount, getOutputStream, getThreshold, isThresholdExceeded, resetByteCount, setByteCount, write, write, write

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • memoryOutputStream

      private ByteArrayOutputStream memoryOutputStream
      The output stream to which data will be written prior to the theshold being reached.
    • currentOutputStream

      private OutputStream currentOutputStream
      The output stream to which data will be written at any given time. This will always be one of memoryOutputStream or diskOutputStream.
    • outputPath

      private Path outputPath
      The path to which output will be directed if the threshold is exceeded.
    • prefix

      private final String prefix
      The temporary file prefix.
    • suffix

      private final String suffix
      The temporary file suffix.
  • Constructor Details

    • OffloadingOutputStream

      public OffloadingOutputStream(int threshold, String prefix, String suffix)
      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.
      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.
      Since:
      1.4
  • Method Details

    • getStream

      protected OutputStream getStream() throws IOException
      Returns the current output stream. This may be memory based or disk based, depending on the current state with respect to the threshold.
      Overrides:
      getStream in class org.apache.commons.io.output.ThresholdingOutputStream
      Returns:
      The underlying output stream.
      Throws:
      IOException - if an error occurs.
    • thresholdReached

      protected void thresholdReached() throws IOException
      Switches the underlying output stream from a memory based stream to one that is backed by disk. This is the point at which we realise that too much data is being written to keep in memory, so we elect to switch to disk-based storage.
      Overrides:
      thresholdReached in class org.apache.commons.io.output.ThresholdingOutputStream
      Throws:
      IOException - if an error occurs.
    • getInputStream

      public InputStream getInputStream() throws IOException
      Throws:
      IOException
    • getData

      public byte[] getData()
      Returns the data for this output stream as an array of bytes, assuming that the data has been retained in memory. If the data was written to disk, this method returns null.
      Returns:
      The data for this output stream, or null if no such data is available.
    • getFile

      public File getFile()
      Returns either the output file specified in the constructor or the temporary file created or null.

      If the constructor specifying the file is used then it returns that same output file, even when threshold has not been reached.

      If constructor specifying a temporary file prefix/suffix is used then the temporary file created once the threshold 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.
    • close

      public void close() throws IOException
      Closes underlying output stream.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Overrides:
      close in class org.apache.commons.io.output.ThresholdingOutputStream
      Throws:
      IOException - if an error occurs.