com.pixelmed.dicom
Class BinaryInputStream

java.lang.Object
  extended by java.io.InputStream
      extended by java.io.FilterInputStream
          extended by com.pixelmed.dicom.BinaryInputStream
All Implemented Interfaces:
Closeable
Direct Known Subclasses:
DicomInputStream

public class BinaryInputStream
extends FilterInputStream

A class that extends FilterInputStream by adding the concept of little and big endian binary value encoding, and supplies functions for reading various sized integer and floating point words.

See Also:
BinaryOutputStream

Field Summary
 
Fields inherited from class java.io.FilterInputStream
in
 
Constructor Summary
BinaryInputStream(File file, boolean big)
          Construct a byte ordered stream from the supplied file.
BinaryInputStream(InputStream i, boolean big)
          Construct a byte ordered stream from the supplied stream.
 
Method Summary
 File getFile()
          Get the file associated with this stream.
 boolean isBigEndian()
          Is the stream byte order big endian ?
 boolean isLittleEndian()
          Is the stream byte order little endian ?
static void main(String[] arg)
          For testing.
 void readComplexDouble(double[] freal, double[] fimaginary, int len)
          Read interleaved complex floating point 64 bit value pairs into real and imaginary arrays.
 void readComplexFloat(float[] freal, float[] fimaginary, int len)
          Read interleaved complex floating point 32 bit value pairs into real and imaginary arrays.
 double readDouble()
          Read one floating point 64 bit value.
 void readDouble(double[] f, int len)
          Read an array of floating point 64 bit values.
 float readFloat()
          Read one floating point 32 bit value.
 void readFloat(float[] f, int len)
          Read an array of floating point 32 bit values.
 void readInsistently(byte[] b, int offset, int length)
          Read as many bytes as requested, unless an exception occurs.
 int readSigned16()
          Read one signed integer 16 bit value.
 int readSigned32()
          Read one signed integer 32 bit value.
 int readUnsigned16()
          Read one unsigned integer 16 bit value.
 void readUnsigned16(short[] w, int len)
          Read an array of unsigned integer 16 bit values.
 void readUnsigned16(short[] w, int offset, int len)
          Read an array of unsigned integer 16 bit values.
 long readUnsigned32()
          Read one unsigned integer 32 bit value.
 int readUnsigned8()
          Read one unsigned integer 8 bit value.
 void setBigEndian()
          Set the stream byte order to big endian.
 void setEndian(boolean big)
          Set the stream byte order to that specified.
 void setFile(File file)
          Set the file associated with this stream.
 void setLittleEndian()
          Set the stream byte order to little endian.
 void skipInsistently(long length)
          Skip as many bytes as requested, unless an exception occurs.
 
Methods inherited from class java.io.FilterInputStream
available, close, mark, markSupported, read, read, read, reset, skip
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BinaryInputStream

public BinaryInputStream(File file,
                         boolean big)
                  throws FileNotFoundException

Construct a byte ordered stream from the supplied file.

The byte order may be changed later.

Parameters:
file - the file to read from
big - true if big endian, false if little endian
Throws:
FileNotFoundException

BinaryInputStream

public BinaryInputStream(InputStream i,
                         boolean big)

Construct a byte ordered stream from the supplied stream.

The byte order may be changed later.

Parameters:
i - the input stream to read from
big - true if big endian, false if little endian
Method Detail

getFile

public File getFile()

Get the file associated with this stream.

Returns:
file the file, or null if not a file input stream

setFile

public void setFile(File file)

Set the file associated with this stream.

This may be used if constructed with a constructor that does not supply a File parameter, e.g., has been indirected through a BufferedInputStream.

Parameters:
file - the file associated with this stream, or null if not a file input stream

isBigEndian

public boolean isBigEndian()

Is the stream byte order big endian ?

Returns:
true if big endian, false if little endian

isLittleEndian

public boolean isLittleEndian()

Is the stream byte order little endian ?

Returns:
true if little endian, false if big endian

setBigEndian

public void setBigEndian()

Set the stream byte order to big endian.


setLittleEndian

public void setLittleEndian()

Set the stream byte order to little endian.


setEndian

public void setEndian(boolean big)

Set the stream byte order to that specified.

Parameters:
big - true if to set to big endian, false if little endian

readInsistently

public void readInsistently(byte[] b,
                            int offset,
                            int length)
                     throws IOException

Read as many bytes as requested, unless an exception occurs.

Parameters:
b - buffer to read into
offset - offset (from 0) in buffer to read into
length - number of bytes to read (no more and no less)
Throws:
IOException

skipInsistently

public void skipInsistently(long length)
                     throws IOException

Skip as many bytes as requested, unless an exception occurs.

Parameters:
length - number of bytes to read (no more and no less)
Throws:
IOException

readUnsigned8

public final int readUnsigned8()
                        throws IOException

Read one unsigned integer 8 bit value.

Returns:
an int containing an unsigned value
Throws:
IOException

readUnsigned16

public final int readUnsigned16()
                         throws IOException

Read one unsigned integer 16 bit value.

Returns:
an int containing an unsigned value
Throws:
IOException

readSigned16

public final int readSigned16()
                       throws IOException

Read one signed integer 16 bit value.

Returns:
an int containing an unsigned value
Throws:
IOException

readUnsigned32

public final long readUnsigned32()
                          throws IOException

Read one unsigned integer 32 bit value.

Returns:
a long containing an unsigned value
Throws:
IOException

readSigned32

public final int readSigned32()
                       throws IOException

Read one signed integer 32 bit value.

Returns:
an int containing an signed value
Throws:
IOException

readFloat

public final float readFloat()
                      throws IOException

Read one floating point 32 bit value.

Returns:
a float value
Throws:
IOException

readDouble

public final double readDouble()
                        throws IOException

Read one floating point 64 bit value.

Returns:
a double value
Throws:
IOException

readUnsigned16

public final void readUnsigned16(short[] w,
                                 int len)
                          throws IOException

Read an array of unsigned integer 16 bit values.

Parameters:
w - an array of sufficient size in which to return the values read
len - the number of 16 bit values to read
Throws:
IOException

readUnsigned16

public final void readUnsigned16(short[] w,
                                 int offset,
                                 int len)
                          throws IOException

Read an array of unsigned integer 16 bit values.

Parameters:
w - an array of sufficient size in which to return the values read
offset - the offset in the array at which to begin storing values
len - the number of 16 bit values to read
Throws:
IOException

readFloat

public final void readFloat(float[] f,
                            int len)
                     throws IOException

Read an array of floating point 32 bit values.

Parameters:
f - an array of sufficient size in which to return the values read
len - the number of 32 bit values to read
Throws:
IOException

readComplexFloat

public final void readComplexFloat(float[] freal,
                                   float[] fimaginary,
                                   int len)
                            throws IOException

Read interleaved complex floating point 32 bit value pairs into real and imaginary arrays.

Parameters:
freal - an array of sufficient size in which to return the real values read, may be null if don't want real values
fimaginary - an array of sufficient size in which to return the real values read, may be null if don't want imaginary values
len - the number of 32 bit values to read
Throws:
IOException

readDouble

public final void readDouble(double[] f,
                             int len)
                      throws IOException

Read an array of floating point 64 bit values.

Parameters:
f - an array of sufficient size in which to return the values read
len - the number of 64 bit values to read
Throws:
IOException

readComplexDouble

public final void readComplexDouble(double[] freal,
                                    double[] fimaginary,
                                    int len)
                             throws IOException

Read interleaved complex floating point 64 bit value pairs into real and imaginary arrays.

Parameters:
freal - an array of sufficient size in which to return the real values read, may be null if don't want real values
fimaginary - an array of sufficient size in which to return the real values read, may be null if don't want imaginary values
len - the number of 64 bit values to read
Throws:
IOException

main

public static void main(String[] arg)

For testing.

Parameters:
arg -