KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > javax > servlet > ServletInputStream


1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */

17 package javax.servlet;
18
19 import java.io.InputStream JavaDoc;
20 import java.io.IOException JavaDoc;
21
22 /**
23  *
24  * Provides an input stream for reading binary data from a client
25  * request, including an efficient <code>readLine</code> method
26  * for reading data one line at a time. With some protocols, such
27  * as HTTP POST and PUT, a <code>ServletInputStream</code>
28  * object can be used to read data sent from the client.
29  *
30  * <p>A <code>ServletInputStream</code> object is normally retrieved via
31  * the {@link ServletRequest#getInputStream} method.
32  *
33  *
34  * <p>This is an abstract class that a servlet container implements.
35  * Subclasses of this class
36  * must implement the <code>java.io.InputStream.read()</code> method.
37  *
38  *
39  * @author Various
40  * @version $Version$
41  *
42  * @see ServletRequest
43  *
44  */

45
46 public abstract class ServletInputStream extends InputStream JavaDoc {
47
48
49
50     /**
51      * Does nothing, because this is an abstract class.
52      *
53      */

54
55     protected ServletInputStream() { }
56
57   
58   
59     
60     /**
61      *
62      * Reads the input stream, one line at a time. Starting at an
63      * offset, reads bytes into an array, until it reads a certain number
64      * of bytes or reaches a newline character, which it reads into the
65      * array as well.
66      *
67      * <p>This method returns -1 if it reaches the end of the input
68      * stream before reading the maximum number of bytes.
69      *
70      *
71      *
72      * @param b an array of bytes into which data is read
73      *
74      * @param off an integer specifying the character at which
75      * this method begins reading
76      *
77      * @param len an integer specifying the maximum number of
78      * bytes to read
79      *
80      * @return an integer specifying the actual number of bytes
81      * read, or -1 if the end of the stream is reached
82      *
83      * @exception IOException if an input or output exception has occurred
84      *
85      */

86      
87     public int readLine(byte[] b, int off, int len) throws IOException JavaDoc {
88
89     if (len <= 0) {
90         return 0;
91     }
92     int count = 0, c;
93
94     while ((c = read()) != -1) {
95         b[off++] = (byte)c;
96         count++;
97         if (c == '\n' || count == len) {
98         break;
99         }
100     }
101     return count > 0 ? count : -1;
102     }
103 }
104
105
106
107
Popular Tags