Class RandomAccessFileOrArray

  • All Implemented Interfaces:
    java.io.DataInput

    public class RandomAccessFileOrArray
    extends java.lang.Object
    implements java.io.DataInput
    An implementation of a RandomAccessFile for input only that accepts a file or a byte array as data source.
    • Field Detail

      • filename

        java.lang.String filename
      • rf

        java.io.RandomAccessFile rf
      • arrayIn

        byte[] arrayIn
      • arrayInPtr

        int arrayInPtr
      • back

        private byte back
      • isBack

        private boolean isBack
      • startOffset

        private int startOffset
    • Constructor Detail

      • RandomAccessFileOrArray

        public RandomAccessFileOrArray​(java.lang.String filename)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • RandomAccessFileOrArray

        public RandomAccessFileOrArray​(java.lang.String filename,
                                       boolean forceRead)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • RandomAccessFileOrArray

        public RandomAccessFileOrArray​(java.net.URL url)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • RandomAccessFileOrArray

        public RandomAccessFileOrArray​(java.io.InputStream is)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • RandomAccessFileOrArray

        public RandomAccessFileOrArray​(byte[] arrayIn)
      • RandomAccessFileOrArray

        public RandomAccessFileOrArray​(RandomAccessFileOrArray file)
                                throws java.io.IOException
        Throws:
        java.io.IOException
    • Method Detail

      • inputStreamToArray

        private void inputStreamToArray​(java.io.InputStream is)
                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • pushBack

        public void pushBack​(byte b)
                      throws java.io.IOException
        Throws:
        java.io.IOException
      • popBack

        public int popBack()
      • isBack

        public boolean isBack()
      • getBack

        public int getBack()
      • clearBack

        public void clearBack()
      • read

        public int read()
                 throws java.io.IOException
        Throws:
        java.io.IOException
      • read

        public int read​(byte[] bb,
                        int off,
                        int len)
                 throws java.io.IOException
        Throws:
        java.io.IOException
      • read

        public int read​(byte[] b)
                 throws java.io.IOException
        Throws:
        java.io.IOException
      • readFully

        public void readFully​(byte[] bb,
                              int off,
                              int len)
                       throws java.io.IOException
        Specified by:
        readFully in interface java.io.DataInput
        Throws:
        java.io.IOException
      • readFully

        public void readFully​(byte[] bb)
                       throws java.io.IOException
        Specified by:
        readFully in interface java.io.DataInput
        Throws:
        java.io.IOException
      • reOpen

        public void reOpen()
                    throws java.io.IOException
        Throws:
        java.io.IOException
      • insureOpen

        protected void insureOpen()
                           throws java.io.IOException
        Throws:
        java.io.IOException
      • isOpen

        public boolean isOpen()
      • close

        public void close()
                   throws java.io.IOException
        Throws:
        java.io.IOException
      • length

        public int length()
                   throws java.io.IOException
        Throws:
        java.io.IOException
      • getFilePointer

        public int getFilePointer()
                           throws java.io.IOException
        Throws:
        java.io.IOException
      • seek

        public void seek​(int pos)
                  throws java.io.IOException
        Throws:
        java.io.IOException
      • seek

        public void seek​(long pos)
                  throws java.io.IOException
        Throws:
        java.io.IOException
      • skipBytes

        public int skipBytes​(int nn)
                      throws java.io.IOException
        Specified by:
        skipBytes in interface java.io.DataInput
        Throws:
        java.io.IOException
      • skip

        public long skip​(long n)
                  throws java.io.IOException
        Throws:
        java.io.IOException
      • getStartOffset

        public int getStartOffset()
      • setStartOffset

        public void setStartOffset​(int startOffset)
                            throws java.io.IOException
        Throws:
        java.io.IOException
      • readBoolean

        public boolean readBoolean()
                            throws java.io.IOException
        Specified by:
        readBoolean in interface java.io.DataInput
        Throws:
        java.io.IOException
      • readByte

        public byte readByte()
                      throws java.io.IOException
        Specified by:
        readByte in interface java.io.DataInput
        Throws:
        java.io.IOException
      • readUnsignedByte

        public int readUnsignedByte()
                             throws java.io.IOException
        Specified by:
        readUnsignedByte in interface java.io.DataInput
        Throws:
        java.io.IOException
      • readShort

        public short readShort()
                        throws java.io.IOException
        Specified by:
        readShort in interface java.io.DataInput
        Throws:
        java.io.IOException
      • readShortLE

        public final short readShortLE()
                                throws java.io.IOException
        Reads a signed 16-bit number from this stream in little-endian order. The method reads two bytes from this stream, starting at the current stream pointer. If the two bytes read, in order, are b1 and b2, where each of the two values is between 0 and 255, inclusive, then the result is equal to:
             (short)((b2 << 8) | b1)
         

        This method blocks until the two bytes are read, the end of the stream is detected, or an exception is thrown.

        Returns:
        the next two bytes of this stream, interpreted as a signed 16-bit number.
        Throws:
        java.io.EOFException - if this stream reaches the end before reading two bytes.
        java.io.IOException - if an I/O error occurs.
      • readUnsignedShort

        public int readUnsignedShort()
                              throws java.io.IOException
        Specified by:
        readUnsignedShort in interface java.io.DataInput
        Throws:
        java.io.IOException
      • readUnsignedShortLE

        public final int readUnsignedShortLE()
                                      throws java.io.IOException
        Reads an unsigned 16-bit number from this stream in little-endian order. This method reads two bytes from the stream, starting at the current stream pointer. If the bytes read, in order, are b1 and b2, where 0 <= b1, b2 <= 255, then the result is equal to:
             (b2 << 8) | b1
         

        This method blocks until the two bytes are read, the end of the stream is detected, or an exception is thrown.

        Returns:
        the next two bytes of this stream, interpreted as an unsigned 16-bit integer.
        Throws:
        java.io.EOFException - if this stream reaches the end before reading two bytes.
        java.io.IOException - if an I/O error occurs.
      • readChar

        public char readChar()
                      throws java.io.IOException
        Specified by:
        readChar in interface java.io.DataInput
        Throws:
        java.io.IOException
      • readCharLE

        public final char readCharLE()
                              throws java.io.IOException
        Reads a Unicode character from this stream in little-endian order. This method reads two bytes from the stream, starting at the current stream pointer. If the bytes read, in order, are b1 and b2, where 0 <= b1, b2 <= 255, then the result is equal to:
             (char)((b2 << 8) | b1)
         

        This method blocks until the two bytes are read, the end of the stream is detected, or an exception is thrown.

        Returns:
        the next two bytes of this stream as a Unicode character.
        Throws:
        java.io.EOFException - if this stream reaches the end before reading two bytes.
        java.io.IOException - if an I/O error occurs.
      • readInt

        public int readInt()
                    throws java.io.IOException
        Specified by:
        readInt in interface java.io.DataInput
        Throws:
        java.io.IOException
      • readIntLE

        public final int readIntLE()
                            throws java.io.IOException
        Reads a signed 32-bit integer from this stream in little-endian order. This method reads 4 bytes from the stream, starting at the current stream pointer. If the bytes read, in order, are b1, b2, b3, and b4, where 0 <= b1, b2, b3, b4 <= 255, then the result is equal to:
             (b4 << 24) | (b3 << 16) + (b2 << 8) + b1
         

        This method blocks until the four bytes are read, the end of the stream is detected, or an exception is thrown.

        Returns:
        the next four bytes of this stream, interpreted as an int.
        Throws:
        java.io.EOFException - if this stream reaches the end before reading four bytes.
        java.io.IOException - if an I/O error occurs.
      • readUnsignedInt

        public final long readUnsignedInt()
                                   throws java.io.IOException
        Reads an unsigned 32-bit integer from this stream. This method reads 4 bytes from the stream, starting at the current stream pointer. If the bytes read, in order, are b1, b2, b3, and b4, where 0 <= b1, b2, b3, b4 <= 255, then the result is equal to:
             (b1 << 24) | (b2 << 16) + (b3 << 8) + b4
         

        This method blocks until the four bytes are read, the end of the stream is detected, or an exception is thrown.

        Returns:
        the next four bytes of this stream, interpreted as a long.
        Throws:
        java.io.EOFException - if this stream reaches the end before reading four bytes.
        java.io.IOException - if an I/O error occurs.
      • readUnsignedIntLE

        public final long readUnsignedIntLE()
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • readLong

        public long readLong()
                      throws java.io.IOException
        Specified by:
        readLong in interface java.io.DataInput
        Throws:
        java.io.IOException
      • readLongLE

        public final long readLongLE()
                              throws java.io.IOException
        Throws:
        java.io.IOException
      • readFloat

        public float readFloat()
                        throws java.io.IOException
        Specified by:
        readFloat in interface java.io.DataInput
        Throws:
        java.io.IOException
      • readFloatLE

        public final float readFloatLE()
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • readDouble

        public double readDouble()
                          throws java.io.IOException
        Specified by:
        readDouble in interface java.io.DataInput
        Throws:
        java.io.IOException
      • readDoubleLE

        public final double readDoubleLE()
                                  throws java.io.IOException
        Throws:
        java.io.IOException
      • readLine

        public java.lang.String readLine()
                                  throws java.io.IOException
        Specified by:
        readLine in interface java.io.DataInput
        Throws:
        java.io.IOException
      • readUTF

        public java.lang.String readUTF()
                                 throws java.io.IOException
        Specified by:
        readUTF in interface java.io.DataInput
        Throws:
        java.io.IOException