Package com.google.common.io
Class FileBackedOutputStream
- java.lang.Object
-
- java.io.OutputStream
-
- com.google.common.io.FileBackedOutputStream
-
- All Implemented Interfaces:
java.io.Closeable
,java.io.Flushable
,java.lang.AutoCloseable
@Beta public final class FileBackedOutputStream extends java.io.OutputStream
AnOutputStream
that starts buffering to a byte array, but switches to file buffering once the data reaches a configurable size.This class is thread-safe.
- Since:
- 1.0
-
-
Constructor Summary
Constructors Constructor Description FileBackedOutputStream(int fileThreshold)
Creates a new instance that uses the given file threshold, and does not reset the data when theByteSource
returned byasByteSource()
is finalized.FileBackedOutputStream(int fileThreshold, boolean resetOnFinalize)
Creates a new instance that uses the given file threshold, and optionally resets the data when theByteSource
returned byasByteSource()
is finalized.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description ByteSource
asByteSource()
Returns a readableByteSource
view of the data that has been written to this stream.void
close()
void
flush()
InputSupplier<java.io.InputStream>
getSupplier()
Deprecated.UseasByteSource()
instead.void
reset()
Callsclose()
if not already closed, and then resets this object back to its initial state, for reuse.void
write(byte[] b)
void
write(byte[] b, int off, int len)
void
write(int b)
-
-
-
Constructor Detail
-
FileBackedOutputStream
public FileBackedOutputStream(int fileThreshold)
Creates a new instance that uses the given file threshold, and does not reset the data when theByteSource
returned byasByteSource()
is finalized.- Parameters:
fileThreshold
- the number of bytes before the stream should switch to buffering to a file
-
FileBackedOutputStream
public FileBackedOutputStream(int fileThreshold, boolean resetOnFinalize)
Creates a new instance that uses the given file threshold, and optionally resets the data when theByteSource
returned byasByteSource()
is finalized.- Parameters:
fileThreshold
- the number of bytes before the stream should switch to buffering to a fileresetOnFinalize
- if true, thereset()
method will be called when theByteSource
returned byasByteSource()
is finalized
-
-
Method Detail
-
getSupplier
@Deprecated public InputSupplier<java.io.InputStream> getSupplier()
Deprecated.UseasByteSource()
instead. This method is scheduled to be removed in Guava 16.0.Returns a supplier that may be used to retrieve the data buffered by this stream. This method returns the same object asasByteSource()
.
-
asByteSource
public ByteSource asByteSource()
Returns a readableByteSource
view of the data that has been written to this stream.- Since:
- 15.0
-
reset
public void reset() throws java.io.IOException
Callsclose()
if not already closed, and then resets this object back to its initial state, for reuse. If data was buffered to a file, it will be deleted.- Throws:
java.io.IOException
- if an I/O error occurred while deleting the file buffer
-
write
public void write(int b) throws java.io.IOException
- Specified by:
write
in classjava.io.OutputStream
- Throws:
java.io.IOException
-
write
public void write(byte[] b) throws java.io.IOException
- Overrides:
write
in classjava.io.OutputStream
- Throws:
java.io.IOException
-
write
public void write(byte[] b, int off, int len) throws java.io.IOException
- Overrides:
write
in classjava.io.OutputStream
- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classjava.io.OutputStream
- Throws:
java.io.IOException
-
flush
public void flush() throws java.io.IOException
- Specified by:
flush
in interfacejava.io.Flushable
- Overrides:
flush
in classjava.io.OutputStream
- Throws:
java.io.IOException
-
-