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:
  • 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