Class RandomAccessFileInStream

java.lang.Object
net.sf.sevenzipjbinding.impl.RandomAccessFileInStream
All Implemented Interfaces:
Closeable, AutoCloseable, IInStream, ISeekableStream, ISequentialInStream

public class RandomAccessFileInStream extends Object implements IInStream
Implementation of IInStream using RandomAccessFile. This is the usual way to open an archive from a file: wrap a RandomAccessFile and pass it to SevenZip.openInArchive(net.sf.sevenzipjbinding.ArchiveFormat, IInStream).
Since:
4.65-1
Author:
Boris Brodski
  • Field Summary

    Fields inherited from interface net.sf.sevenzipjbinding.ISeekableStream

    SEEK_CUR, SEEK_END, SEEK_SET
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructs an instance from the given random access file.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Closes random access file.
    int
    read(byte[] data)
    Reads at least 1 and maximum data.length bytes from the in-stream.
    long
    seek(long offset, int seekOrigin)
    Move current location pointer to the new offset depending on seekOrigin.

    Note: depending on the archive format and the data size this method may be called from different threads.

    Methods inherited from class java.lang.Object

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

    • RandomAccessFileInStream

      public RandomAccessFileInStream(RandomAccessFile randomAccessFile)
      Constructs an instance from the given random access file.
      Parameters:
      randomAccessFile - random access file to use
  • Method Details

    • seek

      public long seek(long offset, int seekOrigin) throws SevenZipException
      Move current location pointer to the new offset depending on seekOrigin.

      Note: depending on the archive format and the data size this method may be called from different threads. Synchronized implementation may be required.
      Specified by:
      seek in interface ISeekableStream
      Parameters:
      offset - absolute or relative offset in the stream to move to
      seekOrigin - one of three possible seek origins:
      Returns:
      new absolute position in the stream.
      Throws:
      SevenZipException - in error case. If this method ends with an exception, the current operation will be reported to 7-Zip as failed. There is no guarantee that no further callback methods will be called. The first and last thrown exceptions will be saved and thrown later on from the originally called method such as IInArchive.extract() or SevenZip.openInArchive(). Up to four exceptions depending on the situation can be saved for further analysis. See SevenZipException and SevenZipException.printStackTraceExtended() for details.
    • read

      public int read(byte[] data) throws SevenZipException
      Reads at least 1 and maximum data.length bytes from the in-stream. If data.length == 0 0 should be returned. If data.length != 0, then return value 0 indicates end-of-stream (EOF). This means no more bytes can be read from the stream.
      This function is allowed to read fewer than the number of remaining bytes in the stream and fewer than data.length. You must call the read() function in a loop if you need an exact amount of data.

      Note: depending on the archive format and the data size this method may be called from different threads. Synchronized implementation may be required.
      Specified by:
      read in interface ISequentialInStream
      Parameters:
      data - buffer to get read data
      Returns:
      number of bytes read into the data array; 0 indicates end of stream.
      Throws:
      SevenZipException - in error case. If this method ends with an exception, the current operation will be reported to 7-Zip as failed. There is no guarantee that no further callback methods will be called. The first and last thrown exceptions will be saved and thrown later on from the originally called method such as IInArchive.extract() or SevenZip.openInArchive(). Up to four exceptions depending on the situation can be saved for further analysis. See SevenZipException and SevenZipException.printStackTraceExtended() for details.
    • close

      public void close() throws IOException
      Closes random access file. After this call no more methods should be called.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException - see RandomAccessFile.close()