Class SerialReader


  • public class SerialReader
    extends Object
    Assists in endian reading from an input stream.
    Author:
    Matthew Tropiano
    • Constructor Detail

      • SerialReader

        public SerialReader​(boolean endianMode)
        Wraps a super reader around an InputStream.
        Parameters:
        endianMode - an _ENDIAN mode.
    • Method Detail

      • setEndianMode

        public void setEndianMode​(boolean mode)
        Sets the byte endian mode for the byte conversion methods. LITTLE_ENDIAN (Intel), the default, orients values from lowest byte to highest, while BIG_ENDIAN (Motorola, VAX) orients values from highest byte to lowest.
        Parameters:
        mode - an _ENDIAN mode.
      • byteRead

        protected int byteRead​(InputStream in)
                        throws IOException
        Reads a byte from the bound stream.
        Parameters:
        in - the input stream to read from.
        Returns:
        the byte read or -1 if the end of the stream is reached.
        Throws:
        IOException - if a read error occurs.
      • byteRead

        protected int byteRead​(InputStream in,
                               byte[] b)
                        throws IOException
        Reads a series of bytes from the bound stream into a byte array until end of stream is reached or the array is filled with bytes.
        Parameters:
        in - the input stream to read from.
        b - the target array to fill with bytes.
        Returns:
        the amount of bytes read or -1 if the end of the stream is reached before a single byte is read.
        Throws:
        IOException - if a read error occurs.
      • byteRead

        protected int byteRead​(InputStream in,
                               byte[] b,
                               int maxlen)
                        throws IOException
        Reads a series of bytes from the bound stream into a byte array until end of stream is reached or maxlen bytes have been read.
        Parameters:
        in - the input stream to read from.
        b - the target array to fill with bytes.
        maxlen - the maximum amount of bytes to read.
        Returns:
        the amount of bytes read or -1 if the end of the stream is reached before a single byte is read.
        Throws:
        IOException - if a read error occurs.
      • seekToPattern

        public boolean seekToPattern​(InputStream in,
                                     byte[] b)
                              throws IOException
        Keeps reading until it hits a specific byte pattern.
        Parameters:
        in - the input stream to read from.
        b - the pattern to search for.
        Returns:
        true if the pattern is found, returns false if the end of the stream is reached before the pattern is matched.
        Throws:
        IOException - if a read error occurs.
      • readFor

        public boolean readFor​(InputStream in,
                               byte[] b)
                        throws IOException
        Reads a bunch of bytes and checks to see if a set of bytes match completely with the input byte string. It reads up to the length of b before it starts the check.
        Parameters:
        in - the input stream to read from.
        b - the input byte string.
        Returns:
        true if the bytes read equal the the same bytes in the input array.
        Throws:
        IOException - if a read error occurs.
      • readByteArray

        public byte[] readByteArray​(InputStream in)
                             throws IOException
        Reads a byte array in from the reader.
        Parameters:
        in - the input stream to read from.
        Returns:
        an array of bytes
        Throws:
        IOException - if the end of the stream is reached prematurely.
      • readString

        public String readString​(InputStream in)
                          throws IOException
        Reads a char array and returns it as a String.
        Parameters:
        in - the input stream to read from.
        Returns:
        the resulting String.
        Throws:
        IOException - if an I/O error occurs.
      • readString

        public String readString​(InputStream in,
                                 String encoding)
                          throws IOException
        Reads a byte vector (an int followed by a series of bytes) and returns it as a String in a particular encoding.
        Parameters:
        in - the input stream to read from.
        encoding - the name of the encoding scheme.
        Returns:
        the decoded string.
        Throws:
        IOException - if an I/O error occurs.
      • readString

        public String readString​(InputStream in,
                                 Charset charset)
                          throws IOException
        Reads a byte vector (an int followed by a series of bytes) and returns it as a String in a particular encoding.
        Parameters:
        in - the input stream to read from.
        charset - the name of the charset to use.
        Returns:
        the decoded string.
        Throws:
        IOException - if an I/O error occurs.
      • readString

        public String readString​(InputStream in,
                                 int bytes,
                                 String encoding)
                          throws IOException
        Reads a byte vector of specific length and returns it as a String in a particular encoding.
        Parameters:
        in - the input stream to read from.
        bytes - the amount of bytes to read.
        encoding - the name of the encoding scheme.
        Returns:
        the decoded string.
        Throws:
        IOException - if an I/O error occurs.
      • readString

        public String readString​(InputStream in,
                                 int bytes,
                                 Charset charset)
                          throws IOException
        Reads a byte vector of specific length and returns it as a String in a particular encoding.
        Parameters:
        in - the input stream to read from.
        bytes - the amount of bytes to read.
        charset - the name of the charset to use.
        Returns:
        the decoded string.
        Throws:
        IOException - if an I/O error occurs.
      • readStringArray

        public String[] readStringArray​(InputStream in)
                                 throws IOException
        Reads in an array of strings. Basically reads an integer length which is the length of the array and then reads that many strings.
        Parameters:
        in - the input stream to read from.
        Returns:
        the decoded string array.
        Throws:
        IOException - if an error occurred during the read.
      • readBoolean

        public boolean readBoolean​(InputStream in)
                            throws IOException
        Reads a byte as a boolean value.
        Parameters:
        in - the input stream to read from.
        Returns:
        a boolean value.
        Throws:
        IOException - if an error occurred during the read.
      • readBooleanArray

        public boolean[] readBooleanArray​(InputStream in)
                                   throws IOException
        Reads in an array of boolean values. Basically reads an integer length which is the amount of booleans and then reads in an integer at a time scanning bits for the boolean values.
        Parameters:
        in - the input stream to read from.
        Returns:
        the boolean array.
        Throws:
        IOException - if an error occurred during the read.
      • readLong

        public long readLong​(InputStream in)
                      throws IOException
        Reads in a long value.
        Parameters:
        in - the input stream to read from.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readLongs

        public long[] readLongs​(InputStream in,
                                int n)
                         throws IOException
        Reads in an amount of long values specified by the user.
        Parameters:
        in - the input stream to read from.
        n - the amount of long integers to read.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readLongArray

        public long[] readLongArray​(InputStream in)
                             throws IOException
        Reads in an array of long values. Basically reads an integer length which is the length of the array and then reads that many longs.
        Parameters:
        in - the input stream to read from.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readByte

        public byte readByte​(InputStream in)
                      throws IOException
        Reads in a single byte.
        Parameters:
        in - the input stream to read from.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readUnsignedByte

        public short readUnsignedByte​(InputStream in)
                               throws IOException
        Reads in a single byte, cast to a short to eliminate sign.
        Parameters:
        in - the input stream to read from.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readBytes

        public int readBytes​(InputStream in,
                             byte[] b)
                      throws IOException
        Reads a series of bytes from the bound stream into a byte array until end of stream is reached or the array is filled with bytes.
        Parameters:
        in - the input stream to read from.
        b - the target array to fill with bytes.
        Returns:
        the amount of bytes read or END_OF_STREAM if the end of the stream is reached before a single byte is read.
        Throws:
        IOException - if an error occurred during the read.
      • readBytes

        public int readBytes​(InputStream in,
                             byte[] b,
                             int maxlen)
                      throws IOException
        Reads a series of bytes from the bound stream into a byte array until end of stream is reached or maxlen bytes have been read.
        Parameters:
        in - the input stream to read from.
        b - the target array to fill with bytes.
        maxlen - the maximum amount of bytes to read.
        Returns:
        the amount of bytes read or END_OF_STREAM if the end of the stream is reached before a single byte is read.
        Throws:
        IOException - if an error occurred during the read.
      • readBytes

        public byte[] readBytes​(InputStream in,
                                int n)
                         throws IOException
        Reads in a specified amount of bytes, returned as an array.
        Parameters:
        in - the input stream to read from.
        n - the amount of bytes to read.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readUnsignedInt

        public long readUnsignedInt​(InputStream in)
                             throws IOException
        Reads in a integer, cast to a long, discarding sign.
        Parameters:
        in - the input stream to read from.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readInt

        public int readInt​(InputStream in)
                    throws IOException
        Reads in an integer.
        Parameters:
        in - the input stream to read from.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • read24BitInt

        public int read24BitInt​(InputStream in)
                         throws IOException
        Reads in a 24-bit integer.
        Parameters:
        in - the input stream to read from.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readInts

        public int[] readInts​(InputStream in,
                              int n)
                       throws IOException
        Reads in a specified amount of integers.
        Parameters:
        in - the input stream to read from.
        n - the amount of integers to read.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readIntArray

        public int[] readIntArray​(InputStream in)
                           throws IOException
        Reads in an array of integers. Basically reads an integer length which is the length of the array and then reads that many integers.
        Parameters:
        in - the input stream to read from.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readFloat

        public float readFloat​(InputStream in)
                        throws IOException
        Reads in a 32-bit float.
        Parameters:
        in - the input stream to read from.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readFloats

        public float[] readFloats​(InputStream in,
                                  int n)
                           throws IOException
        Reads in a specified amount of 32-bit floats.
        Parameters:
        in - the input stream to read from.
        n - the amount of floats to read.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readFloatArray

        public float[] readFloatArray​(InputStream in)
                               throws IOException
        Reads in an array 32-bit floats. Basically reads an integer length which is the length of the array and then reads that many floats.
        Parameters:
        in - the input stream to read from.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readDouble

        public double readDouble​(InputStream in)
                          throws IOException
        Reads in a 64-bit float.
        Parameters:
        in - the input stream to read from.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readDoubles

        public double[] readDoubles​(InputStream in,
                                    int n)
                             throws IOException
        Reads in a specified amount of 64-bit floats.
        Parameters:
        in - the input stream to read from.
        n - the amount of doubles to read.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readDoubleArray

        public double[] readDoubleArray​(InputStream in)
                                 throws IOException
        Reads in an array 64-bit floats. Basically reads an integer length which is the length of the array and then reads that many doubles.
        Parameters:
        in - the input stream to read from.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readShort

        public short readShort​(InputStream in)
                        throws IOException
        Reads in a short.
        Parameters:
        in - the input stream to read from.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readUnsignedShort

        public int readUnsignedShort​(InputStream in)
                              throws IOException
        Reads in a short, cast to an integer, discarding sign.
        Parameters:
        in - the input stream to read from.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readShorts

        public short[] readShorts​(InputStream in,
                                  int n)
                           throws IOException
        Reads in a specified amount of shorts.
        Parameters:
        in - the input stream to read from.
        n - the amount of shorts to read.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readShortArray

        public short[] readShortArray​(InputStream in)
                               throws IOException
        Reads in an array of shorts. Basically reads an integer length which is the length of the array and then reads that many shorts.
        Parameters:
        in - the input stream to read from.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readChar

        public char readChar​(InputStream in)
                      throws IOException
        Reads in a character.
        Parameters:
        in - the input stream to read from.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readChars

        public char[] readChars​(InputStream in,
                                int n)
                         throws IOException
        Reads in a specific amount of characters.
        Parameters:
        in - the input stream to read from.
        n - the amount of characters to read (16-bit).
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readCharArray

        public char[] readCharArray​(InputStream in)
                             throws IOException
        Reads in an array of characters. Basically reads an integer length which is the length of the array and then reads that many characters.
        Parameters:
        in - the input stream to read from.
        Returns:
        the decoded value.
        Throws:
        IOException - if an error occurred during the read.
      • readVariableLengthInt

        public int readVariableLengthInt​(InputStream in)
                                  throws IOException
        Reads an integer from an input stream that is variable-length encoded. Reads up to four bytes. Due to the nature of this value, it is always read in a Big-Endian fashion.
        Parameters:
        in - the input stream to read from.
        Returns:
        an int value from 0x00000000 to 0x0FFFFFFF.
        Throws:
        IOException - if the next byte to read is not available.
      • readVariableLengthLong

        public long readVariableLengthLong​(InputStream in)
                                    throws IOException
        Reads a long from an input stream that is variable-length encoded. Reads up to eight bytes. Due to the nature of this value, it is always read in a Big-Endian fashion.
        Parameters:
        in - the input stream to read from.
        Returns:
        a long value from 0x0000000000000000 to 0x7FFFFFFFFFFFFFFF.
        Throws:
        IOException - if the next byte to read is not available.