| java.lang.Object java.io.InputStream java.io.FilterInputStream com.lutris.util.BMByteSearchStream
BMByteSearchStream | public class BMByteSearchStream extends FilterInputStream (Code) | | Implements the Boyer-Moore pattern matching algorithm for a given
byte pattern. This object implements searches on byte-oriented input
streams.
The algorithm was obtained from "Computer Algorithms - Introduction to
Design and Analysis, Second Edition" by Sara Baase.
|
Field Summary | |
final public static int | AT_PATTERN "At Pattern" value. | final public static int | EOF EOF value. |
Constructor Summary | |
public | BMByteSearchStream(InputStream inputSource, String pattern, int buflen) Creates a Boyer-Moore byte stream scanner for a given pattern.
Creates a buffer of length buflen for the scanning
buffer.
Parameters: inputSource - The input source stream to scan. Parameters: pattern - The pattern to scan for. |
Method Summary | |
public int | available() Returns the number of bytes that can be read from this input stream
without blocking. | public int | availableTo() Returns the number of bytes that can be read from this input stream
without blocking or encountering the search pattern. | public String | peekAheadString(int length) Returns the next length bytes of the input buffer
as a string. | public int | read() Reads the next byte of data from this input stream. | public int | read(byte[] buffer) Reads up to buffer.length bytes of data from this input
stream into an array of bytes. | public int | read(byte[] buffer, int offset, int length) Reads length bytes of data from this input stream into
an array of bytes. | public int | readTo(byte[] buffer, int offset, int length) Reads data into a buffer until the search pattern or the
end of file is detected. | public void | setPattern(String pattern) Set the search pattern. | public void | setPattern(BMByteSearch search) Set the search pattern. | public long | skip(long n) Skips over and discards n bytes of data from the input stream. | public int | skipPattern() Skips all bytes up to and including the search pattern or EOF. | public int | skipTo() Skips all bytes up to but not including the search pattern or EOF.
Returns the number of bytes skipped. |
AT_PATTERN | final public static int AT_PATTERN(Code) | | "At Pattern" value. Indicates that the stream position is
currently at the beginning of a detected pattern occurence.
|
EOF | final public static int EOF(Code) | | EOF value. Traditionally -1.
|
BMByteSearchStream | public BMByteSearchStream(InputStream inputSource, String pattern, int buflen)(Code) | | Creates a Boyer-Moore byte stream scanner for a given pattern.
Creates a buffer of length buflen for the scanning
buffer.
Parameters: inputSource - The input source stream to scan. Parameters: pattern - The pattern to scan for. Charactersoutside the Latin-1 encoding are truncatedto signed bytes. Parameters: buflen - The length to use for the scanning buffer. |
available | public int available() throws IOException(Code) | | Returns the number of bytes that can be read from this input stream
without blocking. This consists of any bytes left in the buffer
plus the result of the underlying stream's available
method.
The number of bytes that can be readwithout blocking. exception: IOException - If an I/O error occurs. |
availableTo | public int availableTo() throws IOException(Code) | | Returns the number of bytes that can be read from this input stream
without blocking or encountering the search pattern. If the search
pattern has been found in the buffer, this is the number of bytes
in the search buffer prior to the search pattern; otherwise, while
there may be additional data in the input stream buffer that can be
brought into the search buffer without blocking, this data may or
may not contain the search pattern (or complete a partial search
pattern located at the end of the buffer), so this is calculated as
the number of bytes left in the search buffer less the length of
the search pattern.
The number of bytes that can be readfor certain without blocking or encounteringthe search pattern. exception: IOException - If an I/O error occurs. |
peekAheadString | public String peekAheadString(int length) throws IOException(Code) | | Returns the next length bytes of the input buffer
as a string. If fewer than length bytes remain on
the input stream, then only the remaining bytes are returned. If
the input stream is at EOF and there are no more bytes in the buffer
then an empty string is returned.
Parameters: length - The number of bytes to look ahead. A string containing the lookahead bytes as 8 bit characters. exception: IOException - Thrown if an I/O exception occurs. |
read | public int read() throws IOException(Code) | | Reads the next byte of data from this 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
The next byte of data, or -1 if the end of stream is reached. exception: IOException - If an I/O error occurs. |
read | public int read(byte[] buffer) throws IOException(Code) | | Reads up to buffer.length bytes of data from this input
stream into an array of bytes. This method blocks until some input
is available
Parameters: buffer - The buffer into which data are read. The number of bytes actually read, or -1if there are no more bytes because theend of stream has been reached. exception: IOException - If an I/O error occurs. |
read | public int read(byte[] buffer, int offset, int length) throws IOException(Code) | | Reads length bytes of data from this input stream into
an array of bytes. This method blocks until some input is available.
Parameters: buffer - The buffer into which data are read. Parameters: offset - The start offset of the data. Parameters: length - The maximum number of bytes read. The total number of bytes read into the buffer, or -1 if there are no more bytesbecause the end of stream has been reached. exception: IOException - If an I/O error occurs. |
readTo | public int readTo(byte[] buffer, int offset, int length) throws IOException(Code) | | Reads data into a buffer until the search pattern or the
end of file is detected. Returns -1 if at the
search pattern or end-of-file.
Parameters: buffer - Buffer to read into. Parameters: offset - Offset in buffer to read into. Parameters: length - Number of bytes to try to read. The number of bytes actually read, or-1 if at the pattern or eof. exception: IOException - Thrown if an I/O exception occurs. |
setPattern | public void setPattern(String pattern)(Code) | | Set the search pattern. After this call, all new scans will be
for the new pattern. Characters outside the values 0-255 are
truncated into signed byte values in the Latin-1 encoding.
Parameters: pattern - The new pattern to search for. |
setPattern | public void setPattern(BMByteSearch search)(Code) | | Set the search pattern. After this call, all new scans will be
for the new pattern. Characters outside the values 0-255 are
truncated into signed byte values in the Latin-1 encoding.
Parameters: search - The precomputed Boyer-Moore searcher. |
skip | public long skip(long n) throws IOException(Code) | | Skips over and discards n bytes of data from the input stream.
The skip method may, for a variety of reasons,
end up skipping over some smaller number of bytes, possibly 0.
The actual number of bytes skipped is returned.
Parameters: n - The number of bytes to be skipped. The actual number of bytes skipped. exception: IOException - If an I/O error occurs. |
skipPattern | public int skipPattern() throws IOException(Code) | | Skips all bytes up to and including the search pattern or EOF.
The number of bytes skipped. exception: IOException - Thrown if an I/O exception occurs. |
skipTo | public int skipTo() throws IOException(Code) | | Skips all bytes up to but not including the search pattern or EOF.
Returns the number of bytes skipped. Repeated calls to
this method will leave the stream at the same postion until
another call explicitly reads or skips the pattern data.
The number of bytes skipped. exception: IOException - Thrown if an I/O exception occurs. |
|
|