org.freehep.util.io
Class ByteCountInputStream

java.lang.Object
  extended by java.io.InputStream
      extended by org.freehep.util.io.DecompressableInputStream
          extended by org.freehep.util.io.BitInputStream
              extended by org.freehep.util.io.ByteOrderInputStream
                  extended by org.freehep.util.io.ByteCountInputStream
All Implemented Interfaces:
Closeable, DataInput
Direct Known Subclasses:
TaggedInputStream

public class ByteCountInputStream
extends ByteOrderInputStream

The input buffer can be limited to less than the number of bytes of the underlying buffer. Only one real input stream exists, which is where the reads take place. A buffer is limited by some length. If more is read, -1 is returned. Multiple limits can be set by calling pushBuffer. If bytes are left in the buffer when popBuffer is called, they are returned in an array. Otherwise null is returned.

Version:
$Id: ByteCountInputStream.java 8584 2006-08-10 23:06:37Z duns $
Author:
Mark Donszelmann, Charles Loomis

Field Summary
 
Fields inherited from class org.freehep.util.io.ByteOrderInputStream
little
 
Fields inherited from class org.freehep.util.io.BitInputStream
BIT_MASK, FIELD_MASK, MASK_SIZE, ONES, ZERO
 
Constructor Summary
ByteCountInputStream(InputStream in, boolean littleEndian, int stackDepth)
          Create a Byte Count input stream from given stream
 
Method Summary
 long getLength()
           
 byte[] popBuffer()
          Pops the buffer from the stack and returns leftover bytes in a byte array
 void pushBuffer(int len)
          Push the current buffer to the stack
 int read()
           
 
Methods inherited from class org.freehep.util.io.ByteOrderInputStream
readAsciiZString, readBoolean, readByte, readByte, readChar, readDouble, readFloat, readFully, readFully, readInt, readInt, readLine, readLong, readShort, readShort, readString, readUnsignedByte, readUnsignedByte, readUnsignedInt, readUnsignedInt, readUnsignedShort, readUnsignedShort, readUTF, skipBytes
 
Methods inherited from class org.freehep.util.io.BitInputStream
byteAlign, fetchByte, readBitFlag, readFBits, readSBits, readUBits
 
Methods inherited from class org.freehep.util.io.DecompressableInputStream
skip, startDecompressing
 
Methods inherited from class java.io.InputStream
available, close, mark, markSupported, read, read, reset
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ByteCountInputStream

public ByteCountInputStream(InputStream in,
                            boolean littleEndian,
                            int stackDepth)
Create a Byte Count input stream from given stream

Parameters:
in - stream to read from
littleEndian - true if stream should be little endian
stackDepth - maximum number of buffers used while reading
Method Detail

read

public int read()
         throws IOException
Overrides:
read in class DecompressableInputStream
Throws:
IOException

pushBuffer

public void pushBuffer(int len)
Push the current buffer to the stack

Parameters:
len - number of bytes that can be read from the current buffer

popBuffer

public byte[] popBuffer()
                 throws IOException
Pops the buffer from the stack and returns leftover bytes in a byte array

Returns:
null if buffer was completely read. Otherwise rest of buffer is read and returned.
Throws:
IOException - if read fails

getLength

public long getLength()
Returns:
number of bytes that can be read from the current buffer


Copyright © 2000-2007 FreeHEP. All Rights Reserved.