Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.struts.upload
Class BufferedMultipartInputStream

    java.lang.Object
      |
      +--java.io.InputStream
            |
            +--org.apache.struts.upload.BufferedMultipartInputStream

public class BufferedMultipartInputStream
extends java.io.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.

Field Summary
`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 java.io.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

Fields inherited from class java.io.InputStream
``

Constructor Summary
`BufferedMultipartInputStream(java.io.InputStream inputStream, int bufferSize, long contentLength, long maxSize)` Public constructor for this class, just wraps the InputStream given

Method Summary
`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

Methods inherited from class java.io.InputStream
`skip`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### inputStream

    protected java.io.InputStream inputStream

  The underlying InputStream used by this class

### buffer

    protected byte[] buffer

  The byte array used to hold buffered data

### 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

### bufferLength

    protected int bufferLength

  The number of bytes read from the underlying InputStream that are in the buffer

### totalLength

    protected int totalLength

  The total number of bytes read so far

### contentLength

    protected long contentLength

  The content length of the multipart data

### maxSize

    protected long maxSize

  The maximum allowed size for the multipart data, or -1 for an unlimited maximum file length

### contentLengthMet

    protected boolean contentLengthMet

  Whether or not bytes up to the Content-Length have been read

### maxLengthMet

    protected boolean maxLengthMet

  Whether or not bytes up to the maximum length have been read

Constructor Detail

### BufferedMultipartInputStream

    public BufferedMultipartInputStream(java.io.InputStream inputStream,
                                        int bufferSize,
                                        long contentLength,
                                        long maxSize)
                                 throws java.io.IOException

  Public constructor for this class, just wraps the InputStream given

Parameters:
  `inputStream` - The underlying stream to read from
  `bufferSize` - The size in bytes of the internal buffer
  `contentLength` - The content length for this request
  `maxSize` - The maximum size in bytes that this multipart request can be, or -1 for an unlimited length

Method Detail

### available

    public int available()

  This method returns the number of available bytes left to read in the buffer before it has to be refilled

  Overrides:
    `available` in class `java.io.InputStream`

### close

    public void close()
               throws java.io.IOException

  This method attempts to close the underlying InputStream

  Overrides:
    `close` in class `java.io.InputStream`
    `java.io.IOException`

### mark

    public void mark(int position)

  This method calls on the mark() method of the underlying InputStream

  Overrides:
    `mark` in class `java.io.InputStream`

### markSupported

    public boolean markSupported()

  This method calls on the markSupported() method of the underlying InputStream

  Overrides:
    `markSupported` in class `java.io.InputStream`
  Returns:
    Whether or not the underlying InputStream supports marking

### maxLengthMet

    public boolean maxLengthMet()

  Returns:
    true if the maximum length has been reached, false otherwise

### contentLengthMet

    public boolean contentLengthMet()

  Returns:
    true if the content length has been reached, false otherwise

### read

    public int read()
             throws java.io.IOException

  This method returns the next byte in the buffer, and refills it if necessary.

  Specified by:
    `read` in class `java.io.InputStream`
  Returns:
    The next byte read in the buffer, or -1 if the end of the stream has been reached
    `java.io.IOException`

### read

    public int read(byte[] b)
             throws java.io.IOException

  This method populates the byte array `b` with data up to `b.length` bytes

  Overrides:
    `read` in class `java.io.InputStream`
    `java.io.IOException`

### read

    public int read(byte[] b,
                    int offset,
                    int length)
             throws java.io.IOException

  This method populates the byte array `b` with data up to `length` starting at b[offset]

  Overrides:
    `read` in class `java.io.InputStream`
    `java.io.IOException`

### readLine

    public int readLine(byte[] b,
                        int offset,
                        int length)
                 throws java.io.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

    `java.io.IOException`

### readLine

    public byte[] readLine()
                    throws java.io.IOException

  This method reads a line, regardless of length.

  Returns:
    A byte array representing the line.
    `java.io.IOException`

### reset

    public void reset()
               throws java.io.IOException

  This method makes a call to the reset() method of the underlying InputStream

  Overrides:
    `reset` in class `java.io.InputStream`
    `java.io.IOException`

### fill

    protected void fill()
                 throws java.io.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

    `java.io.IOException`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2000-2003 - Apache Software Foundation