Package net.i2p.util

Class LookaheadInputStream

All Implemented Interfaces:
Closeable, AutoCloseable

public class LookaheadInputStream extends FilterInputStream
Simple lookahead buffer to keep the last K bytes in reserve, configured to easily be reused. Currently only used by the ResettableGZIPInputStream.
  • Constructor Details

    • LookaheadInputStream

      public LookaheadInputStream(int lookaheadSize)
      Configure a stream that hides a number of bytes from the reader. The last n bytes will never be available from read(), they can only be obtained from getFooter(). initialize() MUST be called before doing any read() calls.
      Parameters:
      lookaheadSize - how many bytes to hide
  • Method Details

    • getEOFReached

      public boolean getEOFReached()
    • initialize

      public void initialize(InputStream src) throws IOException
      Start the LookaheadInputStream with the given input stream. Resets everything if the LookaheadInputStream was previously used. WARNING - blocking until lookaheadSize bytes are read!
      Throws:
      IOException - if less than lookaheadSize bytes could be read.
    • read

      public int read() throws IOException
      Overrides:
      read in class FilterInputStream
      Throws:
      IOException
    • read

      public int read(byte[] buf, int off, int len) throws IOException
      Overrides:
      read in class FilterInputStream
      Throws:
      IOException
    • getFooter

      public byte[] getFooter()
      Grab the lookahead footer. This will be of size lookaheadsize given in constructor. The last byte received will be in the last byte of the array.
    • skip

      public long skip(long n) throws IOException
      Overrides:
      skip in class FilterInputStream
      Throws:
      IOException
      Since:
      0.9.33