Package com.ning.compress.lzf
Class LZFOutputStream
- java.lang.Object
-
- java.io.OutputStream
-
- java.io.FilterOutputStream
-
- com.ning.compress.lzf.LZFOutputStream
-
- All Implemented Interfaces:
java.io.Closeable
,java.io.Flushable
,java.lang.AutoCloseable
,java.nio.channels.Channel
,java.nio.channels.WritableByteChannel
public class LZFOutputStream extends java.io.FilterOutputStream implements java.nio.channels.WritableByteChannel
DecoratorOutputStream
implementation that will compress output using LZF compression algorithm, given uncompressed input to write. Its counterpart isLZFInputStream
; although in some waysLZFCompressingInputStream
can be seen as the opposite.- See Also:
LZFInputStream
,LZFCompressingInputStream
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
_cfgFinishBlockOnFlush
Configuration setting that governs whether basic 'flush()' should first complete a block or not.private ChunkEncoder
_encoder
protected byte[]
_outputBuffer
protected boolean
_outputStreamClosed
Flag that indicates if we have already called '_outputStream.close()' (to avoid calling it multiple times)protected int
_position
private BufferRecycler
_recycler
private static int
DEFAULT_OUTPUT_BUFFER_SIZE
-
Constructor Summary
Constructors Constructor Description LZFOutputStream(ChunkEncoder encoder, java.io.OutputStream outputStream)
LZFOutputStream(ChunkEncoder encoder, java.io.OutputStream outputStream, int bufferSize, BufferRecycler bufferRecycler)
LZFOutputStream(ChunkEncoder encoder, java.io.OutputStream outputStream, BufferRecycler bufferRecycler)
LZFOutputStream(java.io.OutputStream outputStream)
LZFOutputStream(java.io.OutputStream outputStream, BufferRecycler bufferRecycler)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
checkNotClosed()
void
close()
LZFOutputStream
finishBlock()
Method that can be used to force completion of the current block, which means that all buffered data will be compressed into an LZF block.void
flush()
boolean
getFinishBlockOnFlush()
Accessor for checking whether call to "flush()" will first finish the current block or not.java.io.OutputStream
getUnderlyingOutputStream()
Method that can be used to find underlyingOutputStream
that we write encoded LZF encoded data into, after compressing it.boolean
isOpen()
LZFOutputStream
setFinishBlockOnFlush(boolean b)
Method for defining whether call toflush()
will also complete current block (similar to callingfinishBlock()
) or not.void
write(byte[] buffer, int offset, int length)
void
write(int singleByte)
void
write(java.io.InputStream in)
int
write(java.nio.ByteBuffer src)
void
write(java.nio.channels.FileChannel in)
protected void
writeCompressedBlock()
Compress and write the current block to the OutputStream
-
-
-
Field Detail
-
DEFAULT_OUTPUT_BUFFER_SIZE
private static final int DEFAULT_OUTPUT_BUFFER_SIZE
- See Also:
- Constant Field Values
-
_encoder
private final ChunkEncoder _encoder
-
_recycler
private final BufferRecycler _recycler
-
_outputBuffer
protected byte[] _outputBuffer
-
_position
protected int _position
-
_cfgFinishBlockOnFlush
protected boolean _cfgFinishBlockOnFlush
Configuration setting that governs whether basic 'flush()' should first complete a block or not.Default value is 'true'
-
_outputStreamClosed
protected boolean _outputStreamClosed
Flag that indicates if we have already called '_outputStream.close()' (to avoid calling it multiple times)
-
-
Constructor Detail
-
LZFOutputStream
public LZFOutputStream(java.io.OutputStream outputStream)
-
LZFOutputStream
public LZFOutputStream(ChunkEncoder encoder, java.io.OutputStream outputStream)
-
LZFOutputStream
public LZFOutputStream(java.io.OutputStream outputStream, BufferRecycler bufferRecycler)
-
LZFOutputStream
public LZFOutputStream(ChunkEncoder encoder, java.io.OutputStream outputStream, BufferRecycler bufferRecycler)
-
LZFOutputStream
public LZFOutputStream(ChunkEncoder encoder, java.io.OutputStream outputStream, int bufferSize, BufferRecycler bufferRecycler)
-
-
Method Detail
-
setFinishBlockOnFlush
public LZFOutputStream setFinishBlockOnFlush(boolean b)
Method for defining whether call toflush()
will also complete current block (similar to callingfinishBlock()
) or not.
-
write
public void write(int singleByte) throws java.io.IOException
- Overrides:
write
in classjava.io.FilterOutputStream
- Throws:
java.io.IOException
-
write
public void write(byte[] buffer, int offset, int length) throws java.io.IOException
- Overrides:
write
in classjava.io.FilterOutputStream
- Throws:
java.io.IOException
-
write
public void write(java.io.InputStream in) throws java.io.IOException
- Throws:
java.io.IOException
-
write
public void write(java.nio.channels.FileChannel in) throws java.io.IOException
- Throws:
java.io.IOException
-
write
public int write(java.nio.ByteBuffer src) throws java.io.IOException
- Specified by:
write
in interfacejava.nio.channels.WritableByteChannel
- Throws:
java.io.IOException
-
flush
public void flush() throws java.io.IOException
- Specified by:
flush
in interfacejava.io.Flushable
- Overrides:
flush
in classjava.io.FilterOutputStream
- Throws:
java.io.IOException
-
isOpen
public boolean isOpen()
- Specified by:
isOpen
in interfacejava.nio.channels.Channel
-
close
public void close() throws java.io.IOException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.nio.channels.Channel
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classjava.io.FilterOutputStream
- Throws:
java.io.IOException
-
getUnderlyingOutputStream
public java.io.OutputStream getUnderlyingOutputStream()
Method that can be used to find underlyingOutputStream
that we write encoded LZF encoded data into, after compressing it. Will never return null; although underlying stream may be closed (if this stream has been closed).
-
getFinishBlockOnFlush
public boolean getFinishBlockOnFlush()
Accessor for checking whether call to "flush()" will first finish the current block or not.
-
finishBlock
public LZFOutputStream finishBlock() throws java.io.IOException
Method that can be used to force completion of the current block, which means that all buffered data will be compressed into an LZF block. This typically results in lower compression ratio as larger blocks compress better; but may be necessary for network connections to ensure timely sending of data.- Throws:
java.io.IOException
-
writeCompressedBlock
protected void writeCompressedBlock() throws java.io.IOException
Compress and write the current block to the OutputStream- Throws:
java.io.IOException
-
checkNotClosed
protected void checkNotClosed() throws java.io.IOException
- Throws:
java.io.IOException
-
-