Class BinaryInputStream

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable
    Direct Known Subclasses:
    DicomInputStream

    public class BinaryInputStream
    extends java.io.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​(java.io.File file, boolean big)
      Construct a byte ordered stream from the supplied file.
      BinaryInputStream​(java.io.InputStream i, boolean big)
      Construct a byte ordered stream from the supplied stream.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.io.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​(java.lang.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.
      long readSigned64()
      Read one signed integer 64 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.
      void readUnsigned32​(int[] w, int len)
      Read an array of unsigned integer 32 bit values.
      void readUnsigned32​(int[] w, int offset, int len)
      Read an array of unsigned integer 32 bit values.
      long readUnsigned64()
      Read one unsigned integer 64 bit value.
      void readUnsigned64​(long[] w, int len)
      Read an array of unsigned integer 64 bit values.
      void readUnsigned64​(long[] w, int offset, int len)
      Read an array of unsigned integer 64 bit values.
      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​(java.io.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, transferTo
      • Methods inherited from class java.lang.Object

        clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • BinaryInputStream

        public BinaryInputStream​(java.io.File file,
                                 boolean big)
                          throws java.io.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:
        java.io.FileNotFoundException - if file is not found
      • BinaryInputStream

        public BinaryInputStream​(java.io.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 java.io.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​(java.io.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 java.io.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:
        java.io.IOException - if an I/O error occurs
      • skipInsistently

        public void skipInsistently​(long length)
                             throws java.io.IOException

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

        Parameters:
        length - number of bytes to read (no more and no less)
        Throws:
        java.io.IOException - if an I/O error occurs
      • readUnsigned8

        public final int readUnsigned8()
                                throws java.io.IOException

        Read one unsigned integer 8 bit value.

        Returns:
        an int containing an unsigned value
        Throws:
        java.io.IOException - if an I/O error occurs
      • readUnsigned16

        public final int readUnsigned16()
                                 throws java.io.IOException

        Read one unsigned integer 16 bit value.

        Returns:
        an int containing an unsigned value
        Throws:
        java.io.IOException - if an I/O error occurs
      • readSigned16

        public final int readSigned16()
                               throws java.io.IOException

        Read one signed integer 16 bit value.

        Returns:
        an int containing an unsigned value
        Throws:
        java.io.IOException - if an I/O error occurs
      • readUnsigned32

        public final long readUnsigned32()
                                  throws java.io.IOException

        Read one unsigned integer 32 bit value.

        Returns:
        a long containing an unsigned value
        Throws:
        java.io.IOException - if an I/O error occurs
      • readSigned32

        public final int readSigned32()
                               throws java.io.IOException

        Read one signed integer 32 bit value.

        Returns:
        an int containing an signed value
        Throws:
        java.io.IOException - if an I/O error occurs
      • readUnsigned64

        public final long readUnsigned64()
                                  throws java.io.IOException

        Read one unsigned integer 64 bit value.

        Returns:
        a long containing an unsigned value
        Throws:
        java.io.IOException - if an I/O error occurs
      • readSigned64

        public final long readSigned64()
                                throws java.io.IOException

        Read one signed integer 64 bit value.

        Returns:
        a long containing an signed value
        Throws:
        java.io.IOException - if an I/O error occurs
      • readFloat

        public final float readFloat()
                              throws java.io.IOException

        Read one floating point 32 bit value.

        Returns:
        a float value
        Throws:
        java.io.IOException - if an I/O error occurs
      • readDouble

        public final double readDouble()
                                throws java.io.IOException

        Read one floating point 64 bit value.

        Returns:
        a double value
        Throws:
        java.io.IOException - if an I/O error occurs
      • readUnsigned16

        public final void readUnsigned16​(short[] w,
                                         int len)
                                  throws java.io.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:
        java.io.IOException - if an I/O error occurs
      • readUnsigned16

        public final void readUnsigned16​(short[] w,
                                         int offset,
                                         int len)
                                  throws java.io.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:
        java.io.IOException - if an I/O error occurs
      • readUnsigned32

        public final void readUnsigned32​(int[] w,
                                         int len)
                                  throws java.io.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:
        java.io.IOException - if an I/O error occurs
      • readUnsigned32

        public final void readUnsigned32​(int[] w,
                                         int offset,
                                         int len)
                                  throws java.io.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:
        java.io.IOException - if an I/O error occurs
      • readUnsigned64

        public final void readUnsigned64​(long[] w,
                                         int len)
                                  throws java.io.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:
        java.io.IOException - if an I/O error occurs
      • readUnsigned64

        public final void readUnsigned64​(long[] w,
                                         int offset,
                                         int len)
                                  throws java.io.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:
        java.io.IOException - if an I/O error occurs
      • readFloat

        public final void readFloat​(float[] f,
                                    int len)
                             throws java.io.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:
        java.io.IOException - if an I/O error occurs
      • readComplexFloat

        public final void readComplexFloat​(float[] freal,
                                           float[] fimaginary,
                                           int len)
                                    throws java.io.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:
        java.io.IOException - if an I/O error occurs
      • readDouble

        public final void readDouble​(double[] f,
                                     int len)
                              throws java.io.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:
        java.io.IOException - if an I/O error occurs
      • readComplexDouble

        public final void readComplexDouble​(double[] freal,
                                            double[] fimaginary,
                                            int len)
                                     throws java.io.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:
        java.io.IOException - if an I/O error occurs
      • main

        public static void main​(java.lang.String[] arg)

        For testing.

        Parameters:
        arg - file to read from