Terrier IR Platform
2.2.1

uk.ac.gla.terrier.utility
Class LookAheadStream

java.lang.Object
  extended by java.io.InputStream
      extended by uk.ac.gla.terrier.utility.LookAheadStream
All Implemented Interfaces:
java.io.Closeable
Direct Known Subclasses:
LookAheadStreamCaseInsensitive

public class LookAheadStream
extends java.io.InputStream

Implements an InputStream, 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 LookAheadStream with the end marker END. For the following input: a b c d END e f g... the LookAheadStream, will stop after reading the string END. Note that the end marker will be missing from the parent stream.

LookAheadStream allows the encoding to be changed between markers. Handy for collections of webpages, which may use different encodings. However, the end marker must be obtainable using the default encoding.

Version:
$Revision: 1.9 $
Author:
Craig Macdonald, Vassilis Plachouras
See Also:
LookAheadStream

Constructor Summary
LookAheadStream(java.io.InputStream 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
 void close()
          Closes the current stream, by setting the end of file flag equal to true.
 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.InputStream
available, read, read
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LookAheadStream

public LookAheadStream(java.io.InputStream 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.

Specified by:
read in class java.io.InputStream
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.

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().

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.InputStream
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.InputStream
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.

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. Does NOT close the wrapped stream.

Specified by:
close in interface java.io.Closeable
Overrides:
close in class java.io.InputStream
Throws:
java.io.IOException

markSupported

public boolean markSupported()
Support for marking is not implemented.

Overrides:
markSupported in class java.io.InputStream
Returns:
boolean false.

mark

public void mark(int x)
This method is not implemented.

Overrides:
mark in class java.io.InputStream

Terrier IR Platform
2.2.1

Terrier Information Retrieval Platform 2.2.1. Copyright 2004-2008 University of Glasgow