Class RAFileInputStream

All Implemented Interfaces:
Closeable, AutoCloseable

public class RAFileInputStream extends RAInputStream
  • Constructor Summary

    Constructors
    Constructor
    Description
    RAFileInputStream(RandomAccessFile parentFile, long startPos, long endPos)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    Returns the number of bytes that can be read (or skipped over) from this random access input stream without blocking by the next caller of a method for this input stream.
    long
     
    long
     
    long
     
    int
    The same behavior as InputStream.read().
    Reads the next byte of data from the input stream.
    int
    read(byte[] b, int off, int len)
    The same behavior as InputStream.read(byte b[], int off, int len ).
    Reads up to len bytes of data from the input stream into an array of bytes.
    final void
    readFully(byte[] b, int off, int len)
    The same behavior as RandomAccessFile.readFully(byte b[], int off, int len) Reads exactly len bytes from this file into the byte array, starting at the current file pointer.
    int
    The same behavior as RandomAccessFile.readInt().
    final long
    Reads a signed 64-bit integer from this file.
    void
     
    void
    seek(long localPos)
    Move the file pointer to the new location in the stream

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • RAFileInputStream

      public RAFileInputStream(RandomAccessFile parentFile, long startPos, long endPos)
      Parameters:
      parentFile - - underlying RandomAccess file
      startPos - - the (global) position of the first character in parentFile
      endPos - - the (global) position of EOF mark (not a valid character in the file)
  • Method Details

    • refresh

      public void refresh() throws IOException
      Specified by:
      refresh in class RAInputStream
      Throws:
      IOException
    • read

      public int read() throws IOException
      The same behavior as InputStream.read().
      Reads the next byte of data from the input stream. The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

      A subclass must provide an implementation of this method.

      Specified by:
      read in class InputStream
      Returns:
      the next byte of data, or -1 if the end of the stream is reached.
      Throws:
      IOException - if an I/O error occurs.
    • read

      public int read(byte[] b, int off, int len) throws IOException
      The same behavior as InputStream.read(byte b[], int off, int len ).
      Reads up to len bytes of data from the input stream into an array of bytes. If no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

      A subclass must provide an implementation of this method.

      Overrides:
      read in class InputStream
      Returns:
      the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached
      Throws:
      IOException - if an I/O error occurs.
    • readInt

      public int readInt() throws IOException
      The same behavior as RandomAccessFile.readInt().
      Reads a signed 32-bit integer from this file. This method reads 4 bytes from the file, starting at the current file 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.

      Specified by:
      readInt in class RAInputStream
      Returns:
      the next four bytes of this stream, interpreted as an int.
      Throws:
      EOFException - if this stream reaches the end before reading four bytes.
      IOException - if an I/O error occurs.
    • readLong

      public final long readLong() throws IOException
      Reads a signed 64-bit integer from this file. This method reads eight bytes from the file, starting at the current file pointer. If the bytes read, in order, are b1, b2, b3, b4, b5, b6, b7, and b8, where:
           0 <= b1, b2, b3, b4, b5, b6, b7, b8 <=255,
       

      then the result is equal to:

       ((long) b1 << 56) + ((long) b2 << 48) + ((long) b3 << 40) + ((long) b4 << 32) + ((long) b5 << 24)
                      + ((long) b6 << 16) + ((long) b7 << 8) + b8
       

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

      Specified by:
      readLong in class RAInputStream
      Returns:
      the next eight bytes of this file, interpreted as a long.
      Throws:
      EOFException - if this file reaches the end before reading eight bytes.
      IOException - if an I/O error occurs.
    • readFully

      public final void readFully(byte[] b, int off, int len) throws IOException
      The same behavior as RandomAccessFile.readFully(byte b[], int off, int len) Reads exactly len bytes from this file into the byte array, starting at the current file pointer. This method reads repeatedly from the file until the requested number of bytes are read. This method blocks until the requested number of bytes are read, the end of the stream is detected, or an exception is thrown.
      Specified by:
      readFully in class RAInputStream
      Parameters:
      b - the buffer into which the data is read.
      off - the start offset of the data.
      len - the number of bytes to read.
      Throws:
      EOFException - if this file reaches the end before reading all the bytes.
      IOException - if an I/O error occurs.
    • getStreamLength

      public long getStreamLength()
      Returns:
      the length of the stream
    • seek

      public void seek(long localPos) throws IOException
      Move the file pointer to the new location in the stream
      Specified by:
      seek in class RAInputStream
      Parameters:
      localPos - - the new local postion in the stream. The localPos starts from 0.
      Throws:
      IOException
    • getOffset

      public long getOffset() throws IOException
      Specified by:
      getOffset in class RAInputStream
      Throws:
      IOException
    • length

      public long length() throws IOException
      Specified by:
      length in class RAInputStream
      Throws:
      IOException
    • available

      public int available() throws IOException
      Description copied from class: RAInputStream
      Returns the number of bytes that can be read (or skipped over) from this random access input stream without blocking by the next caller of a method for this input stream. The next caller might be the same thread or another thread.

      This abstract class is extended by RAFolderInputStream and RAFileInputStream

      The available method returns -1 when no more data because the end of the stream has been reached.

      and returns Integer.MAX_VALUE when bytes of data is larger then Integer.MAX_VALUE.

      Specified by:
      available in class RAInputStream
      Throws:
      IOException