| java.lang.Object java.io.InputStream java.io.FilterInputStream HTTPClient.ExtBufferedInputStream
ExtBufferedInputStream | final class ExtBufferedInputStream extends FilterInputStream (Code) | | This class is a modified copy of java.io.BufferedInputStream which fixes
the problem in fill when an InterrupedIOException occurs and which
extends the class to allow searching for a string in the internal buffer
(used for multipart content-types).
version: 0.3-2 18/06/1999 author: Ronald Tschalär author: Arthur van Hoff |
Field Summary | |
protected byte | buf The buffer where data is stored. | protected int | count The index one greater than the index of the last valid byte in
the buffer. | protected int | marklimit The maximum read ahead allowed after a call to the
mark method before subsequent calls to the
reset method fail. | protected int | markpos The value of the pos field at the time the last
mark method was called. | protected int | pos The current position in the buffer. |
Constructor Summary | |
public | ExtBufferedInputStream(InputStream in) Creates a new buffered input stream to read data from the
specified input stream with a default 512-byte buffer size. | public | ExtBufferedInputStream(InputStream in, int size) Creates a new buffered input stream to read data from the
specified input stream with the specified buffer size. |
Method Summary | |
public synchronized int | available() Returns the number of bytes that can be read from this input
stream without blocking. | void | initMark() Initialises the mark and sets the marklimit to the buffer length. | public synchronized void | mark(int readlimit) Marks the current position in this input stream. | public boolean | markSupported() Tests if this input stream supports the mark
and reset methods. | int | pastEnd(byte[] search, int[] search_cmp) Figures out how many bytes past the end of the multipart we read. | public synchronized int | read() Reads the next byte of data from this buffered input stream. | public synchronized int | read(byte b, int off, int len) Reads bytes into a portion of an array. | public synchronized void | reset() Repositions this stream to the position at the time the
mark method was last called on this input stream. | public synchronized long | skip(long n) Skips over and discards n bytes of data from the
input stream. |
buf | protected byte buf(Code) | | The buffer where data is stored.
since: JDK1.0 |
count | protected int count(Code) | | The index one greater than the index of the last valid byte in
the buffer.
since: JDK1.0 |
pos | protected int pos(Code) | | The current position in the buffer. This is the index of the next
character to be read from the buf array.
See Also: java.io.BufferedInputStream.buf since: JDK1.0 |
ExtBufferedInputStream | public ExtBufferedInputStream(InputStream in)(Code) | | Creates a new buffered input stream to read data from the
specified input stream with a default 512-byte buffer size.
Parameters: in - the underlying input stream. since: JDK1.0 |
ExtBufferedInputStream | public ExtBufferedInputStream(InputStream in, int size)(Code) | | Creates a new buffered input stream to read data from the
specified input stream with the specified buffer size.
Parameters: in - the underlying input stream. Parameters: size - the buffer size. since: JDK1.0 |
available | public synchronized int available() throws IOException(Code) | | Returns the number of bytes that can be read from this input
stream without blocking.
The available method of
BufferedInputStream returns the sum of the the number
of bytes remaining to be read in the buffer
(count - pos )
and the result of calling the available method of the
underlying input stream.
the number of bytes that can be read from this inputstream without blocking. exception: IOException - if an I/O error occurs. See Also: java.io.FilterInputStream.in since: JDK1.0 |
initMark | void initMark()(Code) | | Initialises the mark and sets the marklimit to the buffer length.
|
mark | public synchronized void mark(int readlimit)(Code) | | Marks the current position in this input stream. A subsequent
call to the reset method repositions the stream at
the last marked position so that subsequent reads re-read the same
bytes.
The readlimit argument tells the input stream to
allow that many bytes to be read before the mark position gets
invalidated.
Parameters: readlimit - the maximum limit of bytes that can be read beforethe mark position becomes invalid. See Also: java.io.BufferedInputStream.reset since: JDK1.0 |
markSupported | public boolean markSupported()(Code) | | Tests if this input stream supports the mark
and reset methods. The markSupported
method of BufferedInputStream returns
true .
a boolean indicating if this stream type supportsthe mark and reset methods. See Also: java.io.InputStream.mark(int) See Also: java.io.InputStream.reset since: JDK1.0 |
pastEnd | int pastEnd(byte[] search, int[] search_cmp)(Code) | | Figures out how many bytes past the end of the multipart we read.
It then resets the markpos to either just past the end boundary
if we found it, or back enough from the current position so we
can always be sure to find the boundary.
Parameters: search - the search string (end boundary) Parameters: search_cmp - the compiled info of the search string how many bytes past the end of the boundary we went. |
read | public synchronized int read() throws IOException(Code) | | Reads the next byte of data from this buffered 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 read method of BufferedInputStream
returns the next byte of data from its buffer if the buffer is not
empty. Otherwise, it refills the buffer from the underlying input
stream and returns the next character, if the underlying stream
has not returned an end-of-stream indicator.
the next byte of data, or -1 if the end of thestream is reached. exception: IOException - if an I/O error occurs. See Also: java.io.FilterInputStream.in since: JDK1.0 |
read | public synchronized int read(byte b, int off, int len) throws IOException(Code) | | Reads bytes into a portion of an array. This method will block until
some input is available, an I/O error occurs, or the end of the stream
is reached.
If this stream's buffer is not empty, bytes are copied from it into
the array argument. Otherwise, the buffer is refilled from the
underlying input stream and, unless the stream returns an end-of-stream
indication, the array argument is filled with characters from the
newly-filled buffer.
As an optimization, if the buffer is empty, the mark is not valid,
and len is at least as large as the buffer, then this
method will read directly from the underlying stream into the given
array. Thus redundant BufferedInputStream s will not copy
data unnecessarily.
Parameters: b - destination buffer. Parameters: off - offset at which to start storing bytes. Parameters: len - maximum number of bytes to read. the number of bytes read, or -1 if the end ofthe stream has been reached. exception: IOException - if an I/O error occurs. |
reset | public synchronized void reset() throws IOException(Code) | | Repositions this stream to the position at the time the
mark method was last called on this input stream.
If the stream has not been marked, or if the mark has been invalidated,
an IOException is thrown. Stream marks are intended to be used in
situations where you need to read ahead a little to see what's in
the stream. Often this is most easily done by invoking some
general parser. If the stream is of the type handled by the
parser, it just chugs along happily. If the stream is not of
that type, the parser should toss an exception when it fails. If an
exception gets tossed within readlimit bytes, the parser will allow the
outer code to reset the stream and to try another parser.
exception: IOException - if this stream has not been marked orif the mark has been invalidated. See Also: java.io.BufferedInputStream.mark(int) since: JDK1.0 |
skip | public synchronized 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 zero. The actual number of bytes skipped is returned.
The skip method of BufferedInputStream
compares the number of bytes it has available in its buffer,
k, where k = count - pos ,
with n . If n ≤ k,
then the pos field is incremented by n .
Otherwise, the pos field is incremented to have the
value count , and the remaining bytes are skipped by
calling the skip method on the underlying input
stream, supplying the argument n - k.
Parameters: n - the number of bytes to be skipped. the actual number of bytes skipped. exception: IOException - if an I/O error occurs. since: JDK1.0 |
|
|