Package com.pixelmed.dicom

# Class BinaryInputStream

java.lang.Object
java.io.InputStream
java.io.FilterInputStream
com.pixelmed.dicom.BinaryInputStream

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

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

Constructors
Constructor
Description
`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

Modifier and Type
Method
Description
`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.
`final void`
`readComplexDouble(double[] freal, double[] fimaginary, int len)`
Read interleaved complex floating point 64 bit value pairs into real and imaginary arrays.
`final void`
`readComplexFloat(float[] freal, float[] fimaginary, int len)`
Read interleaved complex floating point 32 bit value pairs into real and imaginary arrays.
`final double`
`readDouble()`
Read one floating point 64 bit value.
`final void`
`readDouble(double[] f, int len)`
Read an array of floating point 64 bit values.
`final float`
`readFloat()`
Read one floating point 32 bit value.
`final 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.
`final int`
`readSigned16()`
Read one signed integer 16 bit value.
`final int`
`readSigned32()`
Read one signed integer 32 bit value.
`final long`
`readSigned64()`
Read one signed integer 64 bit value.
`final int`
`readUnsigned16()`
Read one unsigned integer 16 bit value.
`final void`
`readUnsigned16(short[] w, int len)`
Read an array of unsigned integer 16 bit values.
`final void`
`readUnsigned16(short[] w, int offset, int len)`
Read an array of unsigned integer 16 bit values.
`final long`
`readUnsigned32()`
Read one unsigned integer 32 bit value.
`final void`
`readUnsigned32(int[] w, int len)`
Read an array of unsigned integer 32 bit values.
`final void`
`readUnsigned32(int[] w, int offset, int len)`
Read an array of unsigned integer 32 bit values.
`final long`
`readUnsigned64()`
Read one unsigned integer 64 bit value.
`final void`
`readUnsigned64(long[] w, int len)`
Read an array of unsigned integer 64 bit values.
`final void`
`readUnsigned64(long[] w, int offset, int len)`
Read an array of unsigned integer 64 bit values.
`final 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.io.InputStream

`nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo`

### Methods inherited from class java.lang.Object

`clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### 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` - if file is not found

### 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 Details

### 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` - if an I/O error occurs

### 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` - if an I/O error occurs

### readUnsigned8

public final int readUnsigned8() throws IOException

Read one unsigned integer 8 bit value.

Returns:
  an int containing an unsigned value
Throws:
  `IOException` - if an I/O error occurs

### readUnsigned16

public final int readUnsigned16() throws IOException

Read one unsigned integer 16 bit value.

Returns:
  an int containing an unsigned value
Throws:
  `IOException` - if an I/O error occurs

### readSigned16

public final int readSigned16() throws IOException

Read one signed integer 16 bit value.

Returns:
  an int containing an unsigned value
Throws:
  `IOException` - if an I/O error occurs

### readUnsigned32

public final long readUnsigned32() throws IOException

Read one unsigned integer 32 bit value.

Returns:
  a long containing an unsigned value
Throws:
  `IOException` - if an I/O error occurs

### readSigned32

public final int readSigned32() throws IOException

Read one signed integer 32 bit value.

Returns:
  an int containing an signed value
Throws:
  `IOException` - if an I/O error occurs

### readUnsigned64

public final long readUnsigned64() throws IOException

Read one unsigned integer 64 bit value.

Returns:
  a long containing an unsigned value
Throws:
  `IOException` - if an I/O error occurs

### readSigned64

public final long readSigned64() throws IOException

Read one signed integer 64 bit value.

Returns:
  a long containing an signed value
Throws:
  `IOException` - if an I/O error occurs

### readFloat

public final float readFloat() throws IOException

Read one floating point 32 bit value.

Returns:
  a float value
Throws:
  `IOException` - if an I/O error occurs

### readDouble

public final double readDouble() throws IOException

Read one floating point 64 bit value.

Returns:
  a double value
Throws:
  `IOException` - if an I/O error occurs

### 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` - if an I/O error occurs

### 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` - if an I/O error occurs

### readUnsigned32

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

Read an array of unsigned integer 32 bit values.

Parameters:
  `w` - an array of sufficient size in which to return the values read
  `len` - the number of 32 bit values to read
Throws:
  `IOException` - if an I/O error occurs

### readUnsigned32

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

Read an array of unsigned integer 32 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 32 bit values to read
Throws:
  `IOException` - if an I/O error occurs

### readUnsigned64

public final void readUnsigned64(long[] w, int len) throws IOException

Read an array of unsigned integer 64 bit values.

Parameters:
  `w` - an array of sufficient size in which to return the values read
  `len` - the number of 64 bit values to read
Throws:
  `IOException` - if an I/O error occurs

### readUnsigned64

public final void readUnsigned64(long[] w, int offset, int len) throws IOException

Read an array of unsigned integer 64 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 64 bit values to read
Throws:
  `IOException` - if an I/O error occurs

### 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` - if an I/O error occurs

### 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` - if an I/O error occurs

### 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` - if an I/O error occurs

### 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` - if an I/O error occurs

### main

public static void main(String[] arg)

For testing.

Parameters:
  `arg` - file to read from