FreeHEP API
Version v1.2

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:
DataOutput, FinishableOutputStream, ImageOutput
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,v 1.10 2003/05/14 18:29:04 duns Exp $
Author:
Mark Donszelmann

Field Summary
 
Fields inherited from class org.freehep.util.io.ByteOrderOutputStream
little, written
 
Fields inherited from class java.io.FilterOutputStream
out
 
Constructor Summary
ByteCountOutputStream(OutputStream out, boolean littleEndian)
           
 
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.
 void pushBuffer()
           
 void write(int b)
           
 
Methods inherited from class org.freehep.util.io.ByteOrderOutputStream
size, writeAsciiZString, writeBoolean, writeByte, writeByte, writeBytes, writeChar, writeChars, writeDouble, writeFloat, writeImage, writeImage, writeInt, writeInt, writeLong, writeShort, writeShort, writeString, writeUnsignedByte, writeUnsignedByte, writeUnsignedInt, writeUnsignedInt, writeUnsignedShort, writeUnsignedShort, writeUTF, writeUTF
 
Methods inherited from class org.freehep.util.io.BitOutputStream
byteAlign, finish, flushByte, minBits, minBits, minBits, writeBitFlag, writeFBits, writeSBits, writeUBits
 
Methods inherited from class org.freehep.util.io.CompressableOutputStream
startCompressing, write
 
Methods inherited from class java.io.FilterOutputStream
flush, write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.io.DataOutput
write, write
 

Constructor Detail

ByteCountOutputStream

public ByteCountOutputStream(OutputStream out,
                             boolean littleEndian)
Method Detail

write

public void write(int b)
           throws IOException
Specified by:
write in interface DataOutput
Overrides:
write in class ByteOrderOutputStream
IOException

pushBuffer

public void pushBuffer()
                throws IOException
IOException

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.

IOException

getBufferLength

public int getBufferLength()

getLength

public int getLength()

append

public void append()
            throws IOException
Inserts the bytes written as header and puts the write pointer at the end of the stream.

IOException

close

public void close()
           throws IOException
closes the stream, inserting any non-written header.

Overrides:
close in class BitOutputStream
IOException

FreeHEP API
Version v1.2

Copyright © 2000-2003 FreeHEP, All Rights Reserved.