FileDocCategorySizeDatePackage
ServletInputStream.javaAPI DocApache Tomcat 6.0.143078Fri Jul 20 04:20:36 BST 2007javax.servlet

ServletInputStream

public abstract class ServletInputStream extends InputStream
Provides an input stream for reading binary data from a client request, including an efficient readLine method for reading data one line at a time. With some protocols, such as HTTP POST and PUT, a ServletInputStream object can be used to read data sent from the client.

A ServletInputStream object is normally retrieved via the {@link ServletRequest#getInputStream} method.

This is an abstract class that a servlet container implements. Subclasses of this class must implement the java.io.InputStream.read() method.

author
Various
version
$Version$
see
ServletRequest

Fields Summary
Constructors Summary
protected ServletInputStream()
Does nothing, because this is an abstract class.

 
Methods Summary
public intreadLine(byte[] b, int off, int len)
Reads the input stream, one line at a time. Starting at an offset, reads bytes into an array, until it reads a certain number of bytes or reaches a newline character, which it reads into the array as well.

This method returns -1 if it reaches the end of the input stream before reading the maximum number of bytes.

param
b an array of bytes into which data is read
param
off an integer specifying the character at which this method begins reading
param
len an integer specifying the maximum number of bytes to read
return
an integer specifying the actual number of bytes read, or -1 if the end of the stream is reached
exception
IOException if an input or output exception has occurred


	if (len <= 0) {
	    return 0;
	}
	int count = 0, c;

	while ((c = read()) != -1) {
	    b[off++] = (byte)c;
	    count++;
	    if (c == '\n" || count == len) {
		break;
	    }
	}
	return count > 0 ? count : -1;