org.apache.struts.upload
Class BufferedMultipartInputStream
InputStream
org.apache.struts.upload.BufferedMultipartInputStream
public class BufferedMultipartInputStream
extends InputStream
This class implements buffering for an InputStream as well as a
readLine method. The purpose of this is to provide a reliable
readLine() method.
protected byte[] | buffer - The byte array used to hold buffered data
|
protected int | bufferLength - The number of bytes read from the underlying InputStream that are
in the buffer
|
protected int | bufferOffset - The current offset we're at in the buffer's byte array
|
protected int | bufferSize - The size of the byte array buffer
|
protected long | contentLength - The content length of the multipart data
|
protected boolean | contentLengthMet - Whether or not bytes up to the Content-Length have been read
|
protected InputStream | inputStream - The underlying InputStream used by this class
|
protected boolean | maxLengthMet - Whether or not bytes up to the maximum length have been read
|
protected long | maxSize - The maximum allowed size for the multipart data, or -1 for an unlimited
maximum file length
|
protected int | totalLength - The total number of bytes read so far
|
BufferedMultipartInputStream(InputStream inputStream, int bufferSize, long contentLength, long maxSize) - Public constructor for this class, just wraps the InputStream
given
|
int | available() - This method returns the number of available bytes left to read
in the buffer before it has to be refilled
|
void | close() - This method attempts to close the underlying InputStream
|
boolean | contentLengthMet()
|
protected void | fill() - Fills the buffer with data from the underlying inputStream.
|
void | mark(int position) - This method calls on the mark() method of the underlying InputStream
|
boolean | markSupported() - This method calls on the markSupported() method of the underlying InputStream
|
boolean | maxLengthMet()
|
int | read() - This method returns the next byte in the buffer, and refills it if necessary.
|
int | read(byte[] b) - This method populates the byte array
b with data up to
b.length bytes
|
int | read(byte[] b, int offset, int length) - This method populates the byte array
b with data up to
length starting at b[offset]
|
byte[] | readLine() - This method reads a line, regardless of length.
|
int | readLine(byte[] b, int offset, int length) - This method reads into the byte array
b until
a newline ('\n') character is encountered or the number of bytes
specified by length have been read
|
void | reset() - This method makes a call to the reset() method of the underlying
InputStream
|
buffer
protected byte[] buffer
The byte array used to hold buffered data
bufferLength
protected int bufferLength
The number of bytes read from the underlying InputStream that are
in the buffer
bufferOffset
protected int bufferOffset
The current offset we're at in the buffer's byte array
bufferSize
protected int bufferSize
The size of the byte array buffer
contentLength
protected long contentLength
The content length of the multipart data
contentLengthMet
protected boolean contentLengthMet
Whether or not bytes up to the Content-Length have been read
inputStream
protected InputStream inputStream
The underlying InputStream used by this class
maxLengthMet
protected boolean maxLengthMet
Whether or not bytes up to the maximum length have been read
maxSize
protected long maxSize
The maximum allowed size for the multipart data, or -1 for an unlimited
maximum file length
totalLength
protected int totalLength
The total number of bytes read so far
BufferedMultipartInputStream
public BufferedMultipartInputStream(InputStream inputStream,
int bufferSize,
long contentLength,
long maxSize)
throws IOException
Public constructor for this class, just wraps the InputStream
given
inputStream
- The underlying stream to read frombufferSize
- The size in bytes of the internal buffercontentLength
- The content length for this requestmaxSize
- The maximum size in bytes that this multipart
request can be, or -1 for an unlimited length
available
public int available()
This method returns the number of available bytes left to read
in the buffer before it has to be refilled
close
public void close()
throws IOException
This method attempts to close the underlying InputStream
contentLengthMet
public boolean contentLengthMet()
- true if the content length has been reached, false otherwise
fill
protected void fill()
throws IOException
Fills the buffer with data from the underlying inputStream. If it can't
fill the entire buffer in one read, it will read as many times as necessary
to fill the buffer
mark
public void mark(int position)
This method calls on the mark() method of the underlying InputStream
markSupported
public boolean markSupported()
This method calls on the markSupported() method of the underlying InputStream
- Whether or not the underlying InputStream supports marking
maxLengthMet
public boolean maxLengthMet()
- true if the maximum length has been reached, false otherwise
read
public int read()
throws IOException
This method returns the next byte in the buffer, and refills it if necessary.
- The next byte read in the buffer, or -1 if the end of the stream has
been reached
read
public int read(byte[] b)
throws IOException
This method populates the byte array b
with data up to
b.length
bytes
read
public int read(byte[] b,
int offset,
int length)
throws IOException
This method populates the byte array b
with data up to
length
starting at b[offset]
readLine
public byte[] readLine()
throws IOException
This method reads a line, regardless of length.
- A byte array representing the line.
readLine
public int readLine(byte[] b,
int offset,
int length)
throws IOException
This method reads into the byte array b
until
a newline ('\n') character is encountered or the number of bytes
specified by length
have been read
reset
public void reset()
throws IOException
This method makes a call to the reset() method of the underlying
InputStream
Copyright B) 2000-2007 - The Apache Software Foundation