Class LookAheadReader

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, java.lang.Readable

    public class LookAheadReader
    extends java.io.Reader
    Implements a Reader, that encapsulates another stream, but only upto the point that a pre-defined end marker in the stream is identified. The Reader will then become endOfFile, and refuse to return any more characters from the stream. Suppose that we create an instance of a LookAheadReader with the end marker END. For the following input: a b c d END e f g... the LookAheadReader will stop after reading the string END. Note that the end marker will be missing from the parent stream.
    Author:
    Craig Macdonald, Vassilis Plachouras
    See Also:
    LookAheadStream
    • Field Summary

      • Fields inherited from class java.io.Reader

        lock
    • Constructor Summary

      Constructors 
      Constructor Description
      LookAheadReader​(java.io.Reader parent, java.lang.String endMarker)
      Creates an instance of a LookAheadReader that will read from the given stream until the end marker is found.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      Closes the current stream, by setting the end of file flag equal to true.
      static void main​(java.lang.String[] args)
      A testing method for
      void mark​(int x)
      This method is not implemented.
      boolean markSupported()
      Support for marking is not implemented.
      int read()
      Read a character from the parent stream, first checking that it doesnt form part of the end marker.
      int read​(char[] cbuf)
      Read characters into an array.
      int read​(char[] cbuf, int offset, int len)
      Read characters into a portion of an array.
      boolean ready()
      Indicates whether there are more characters available to read from the stream.
      void reset()
      Reset the stream.
      long skip​(long n)
      Skips n characters from the stream.
      • Methods inherited from class java.io.Reader

        nullReader, read, transferTo
      • Methods inherited from class java.lang.Object

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

      • LookAheadReader

        public LookAheadReader​(java.io.Reader parent,
                               java.lang.String endMarker)
        Creates an instance of a LookAheadReader that will read from the given stream until the end marker is found.
        Parameters:
        parent - Reader the stream used for reading the input/
        endMarker - String the marker which signifies the end of the stream.
    • Method Detail

      • read

        public int read()
                 throws java.io.IOException
        Read a character from the parent stream, first checking that it doesnt form part of the end marker.
        Overrides:
        read in class java.io.Reader
        Returns:
        int the code of the read character, or -1 if the end of the stream has been reached.
        Throws:
        java.io.IOException - if there is any error while reading from the stream.
      • read

        public int read​(char[] cbuf)
                 throws java.io.IOException
        Read characters into an array. This method will read 100 characters or the array length, and until the end of the stream is reached. NB: Uses read() internally.
        Overrides:
        read in class java.io.Reader
        Parameters:
        cbuf - cbuf - Destination buffer
        Returns:
        The number of characters read, or -1 if the end of the stream has been reached.
        Throws:
        java.io.IOException - If an I/O error occurs
      • read

        public int read​(char[] cbuf,
                        int offset,
                        int len)
                 throws java.io.IOException
        Read characters into a portion of an array. It will try to read the specified number of characters into the buffer. NB:Implemented in terms of read().
        Specified by:
        read in class java.io.Reader
        Parameters:
        cbuf - Destination buffer
        offset - Offset at which to start storing characters
        len - Maximum number of characters to read
        Returns:
        The number of characters read, or -1 if the end of the stream has been reached
        Throws:
        java.io.IOException - If an I/O error occurs
      • reset

        public void reset()
                   throws java.io.IOException
        Reset the stream. Attempts to reset it in some way appropriate to the particular stream, for example by positioning it to its starting point. Not all character-input streams support the reset() operation. Use at your own risk.
        Overrides:
        reset in class java.io.Reader
        Throws:
        java.io.IOException - thrown if ParentStream.reset();
      • skip

        public long skip​(long n)
                  throws java.io.IOException
        Skips n characters from the stream. If the end of the stream has been reached before reading n characters, then it returns. NB: This method uses read() internally.
        Overrides:
        skip in class java.io.Reader
        Parameters:
        n - long the number of characters to skip.
        Returns:
        long the number of characters skipped.
        Throws:
        java.io.IOException - if there is any error while reading from the stream.
      • ready

        public boolean ready()
                      throws java.io.IOException
        Indicates whether there are more characters available to read from the stream.
        Overrides:
        ready in class java.io.Reader
        Returns:
        boolean true if there are more characters available for reading, otherwise it returns false.
        Throws:
        java.io.IOException - if there is any error while reading from the stream.
      • close

        public void close()
                   throws java.io.IOException
        Closes the current stream, by setting the end of file flag equal to true.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in class java.io.Reader
        Throws:
        java.io.IOException
      • markSupported

        public boolean markSupported()
        Support for marking is not implemented.
        Overrides:
        markSupported in class java.io.Reader
        Returns:
        boolean false.
      • mark

        public void mark​(int x)
                  throws java.io.IOException
        This method is not implemented.
        Overrides:
        mark in class java.io.Reader
        Throws:
        java.io.IOException
      • main

        public static void main​(java.lang.String[] args)
        A testing method for
        Parameters:
        args - the command line arguments, which should contain the name of a file with documents delimited by the second command line argument.