org.freehep.util.io
Class ByteCountOutputStream
java.lang.Object
java.io.OutputStream
java.io.FilterOutputStream
org.freehep.util.io.CompressableOutputStream
org.freehep.util.io.BitOutputStream
org.freehep.util.io.ByteOrderOutputStream
org.freehep.util.io.ByteCountOutputStream
- All Implemented Interfaces:
- Closeable, DataOutput, Flushable, FinishableOutputStream
- Direct Known Subclasses:
- TaggedOutputStream
public class ByteCountOutputStream
- extends ByteOrderOutputStream
Allows to write to some internal buffer and keep count of any set of stacked
buffers written. When a pushBuffer is called, a new buffer is created. When a
popBuffer is called, the number of bytes written to the popped buffer is
returned. From this moment on one is writing again to the underlying
buffer/outputstream. A header can be written and the header can be written.
By calling append(), the previous buffer will be appended to the underlying
one. This way one can write into a buffer, retrieve its length, create some
header bytes and insert those in front of the just written buffer.
- Version:
- $Id: ByteCountOutputStream.java 8584 2006-08-10 23:06:37Z duns $
- Author:
- Mark Donszelmann, Ian Graham - added popBufferBytes() for use by CGMOutputStream
Method Summary |
void |
append()
Inserts the bytes written as header and puts the write pointer at the end
of the stream. |
void |
close()
closes the stream, inserting any non-written header. |
int |
getBufferLength()
|
int |
getLength()
|
int |
popBuffer()
returns the number of bytes written since the last pushBuffer call. |
byte[] |
popBufferBytes()
Similar to pop buffer, but returns the actual byte[] buffer and then
removes it from the bufferList so that subsequent appends will have no
action. |
void |
pushBuffer()
Pushes the buffer and strat writing to a new one. |
void |
write(int b)
|
Methods inherited from class org.freehep.util.io.ByteOrderOutputStream |
size, writeAsciiZString, writeBoolean, writeByte, writeByte, writeBytes, writeChar, writeChars, writeDouble, writeFloat, writeInt, writeInt, writeLong, writeShort, writeShort, writeString, writeUnsignedByte, writeUnsignedByte, writeUnsignedInt, writeUnsignedInt, writeUnsignedShort, writeUnsignedShort, writeUTF, writeUTF |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ByteCountOutputStream
public ByteCountOutputStream(OutputStream out,
boolean littleEndian)
- Create a Byte Count output stream from given stream
- Parameters:
out
- stream to write tolittleEndian
- true if stream should be little endian
write
public void write(int b)
throws IOException
- Specified by:
write
in interface DataOutput
- Overrides:
write
in class ByteOrderOutputStream
- Throws:
IOException
pushBuffer
public void pushBuffer()
throws IOException
- Pushes the buffer and strat writing to a new one.
- Throws:
IOException
- if the write fails
popBuffer
public int popBuffer()
throws IOException
- returns the number of bytes written since the last pushBuffer call. It
also puts the write pointer at the start of the buffer, to be able to
"insert" a header. If no buffer was ever pushed, or the last one has been
popped -1 is returned.
- Returns:
- number of bytes written or -1
- Throws:
IOException
- if the write fails
popBufferBytes
public byte[] popBufferBytes()
throws IOException
- Similar to pop buffer, but returns the actual byte[] buffer and then
removes it from the bufferList so that subsequent appends will have no
action. When using this method, the caller is responsible for writing all
buffered data as desired. The byte[] array will usually be larger than
the actual content, so to determine the length of the actual data, you
must call getBufferLength() before invoking this method.
- Returns:
- byte array of bytes that need to be written
- Throws:
IOException
- if write fails
getBufferLength
public int getBufferLength()
- Returns:
- valid number of bytes in the buffer
getLength
public int getLength()
- Returns:
- total number of bytes written
append
public void append()
throws IOException
- Inserts the bytes written as header and puts the write pointer at the end
of the stream.
- Throws:
IOException
- if write fails
close
public void close()
throws IOException
- closes the stream, inserting any non-written header.
- Specified by:
close
in interface Closeable
- Overrides:
close
in class BitOutputStream
- Throws:
IOException
Copyright © 2000-2007 FreeHEP. All Rights Reserved.