クラス ServletInputStream
- 実装されているすべてのインターフェース:
CloseableSE
,AutoCloseableSE
readLine
メソッドが含まれます。HTTP POST や PUT などの一部のプロトコルでは、ServletInputStream
オブジェクトを使用して、クライアントから送信されたデータを読み取ることができます。ServletInputStream
オブジェクトは、通常 ServletRequest.getInputStream()
メソッドを介して取得されます。
これは、サーブレットコンテナーが実装する抽象クラスです。このクラスのサブクラスは、java.io.InputStream.read()
メソッドを実装する必要があります。
- 作成者:
- Various
- 関連事項:
コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明abstract boolean
ストリームからすべてのデータが読み取られた場合は true を返し、そうでない場合は false を返します。abstract boolean
isReady()
read()
メソッドの呼び出しが許可されている場合は、true
を返します。int
read
(ByteBufferSE buffer) 入力ストリームから指定されたバッファーに読み取ります。byte[]
int
readLine
(byte[] b, int off, int len) 入力ストリームを一度に 1 行ずつ読み取ります。int
readNBytes
(byte[] b, int off, int len) byte[]
readNBytes
(int len) abstract void
setReadListener
(ReadListener readListener) 読み取りが可能になったときに、提供されたReadListener
を呼び出すようServletInputStream
に指示しますクラス java.io.InputStreamSE から継承されたメソッド
available, close, markSE, markSupported, nullInputStream, read, readSE, readSE, reset, skipSE, skipNBytesSE, transferToSE
コンストラクターの詳細
ServletInputStream
protected ServletInputStream()これは抽象クラスであるため、何もしません。
メソッドの詳細
read
入力ストリームから指定されたバッファーに読み取ります。入力ストリームがノンブロッキングモードの場合、このメソッドを呼び出すたびに
isReady()
を呼び出してtrue
を返す必要があります。または、ReadListener.onDataAvailable()
コールバックでデータを読み取ることができることを示す必要があり、そうでない場合はIllegalStateException
SE をスローする必要があります。それ以外の場合、
buffer
にスペースが残っていないときにこのメソッドが呼び出された場合、メソッドは直ちに0
を返し、buffer
は変更されません。入力ストリームがブロッキングモードで、
buffer
にスペースが残っている場合、このメソッドは、少なくとも 1 バイトが読み取られるか、ストリームの終わりに到達するか、例外がスローされるまでブロックします。読み取ったバイト数を返すか、データをまったく読み取らずにストリームの終わりに到達した場合は
-1
を返します。メソッドが戻ったとき、データが読み取られている場合、バッファーの位置はこのメソッドに渡されたときの値から変更されず、制限は読み取られたバイト数によって増分された位置になります。
サブクラスでは、このメソッドをオーバーライドして、より効率的な実装を提供することを強くお勧めします。
- パラメーター:
buffer
- データが読み込まれるバッファー。- 戻り値:
- 読み取られたバイト数、またはストリームの終わりに達した場合は
-1
。 - 例外:
IllegalStateExceptionSE
- 入力ストリームがノンブロッキングモードで、最初にisReady()
を呼び出さずにこのメソッドが呼び出され、そのメソッドがtrue
を返したか、ReadListener.onDataAvailable()
がデータの読み取りが可能であることを通知しなかった場合。IOExceptionSE
- ストリームの終端に到達した以外の何らかの理由でデータを読み取れない場合は、入力ストリームが閉じられているか、その他の I/O エラーが発生しています。NullPointerExceptionSE
- バッファが null の場合。- 導入:
- Servlet 6.1
readLine
入力ストリームを一度に 1 行ずつ読み取ります。オフセットから開始して、特定のバイト数を読み取るか、改行文字に達するまで配列にバイトを読み取ります。改行文字も配列に読み取ります。このメソッドは、最大バイト数を読み取る前に入力ストリームの終わりに到達した場合、
-1
を返します。このメソッドは、入力ストリームがブロッキングモードの場合にのみ使用できます。
- パラメーター:
b
- データが読み込まれるバイトの配列off
- このメソッドが読み取りを開始する文字を指定する整数len
- 読み込むバイトの最大数を指定する整数- 戻り値:
- 読み込まれた実際のバイト数を指定する整数、またはストリームの終わりに達した場合は -1
- 例外:
IllegalStateExceptionSE
- 入力ストリームがノンブロッキングモードのときにこのメソッドが呼び出された場合。IOExceptionSE
- 入力または出力の例外が発生した場合
isFinished
public abstract boolean isFinished()ストリームからすべてのデータが読み取られた場合は true を返し、そうでない場合は false を返します。- 戻り値:
- この特定のリクエストのすべてのデータが読み取られた場合は
true
、そうでない場合はfalse
を返します。 - 導入:
- Servlet 3.1
isReady
public abstract boolean isReady()read()
メソッドの呼び出しが許可されている場合は、true
を返します。ブロッキングモードでは、このメソッドは常にtrue
を返しますが、後続のread()
メソッドの呼び出しによって待機中のデータがブロックされる可能性があります。ノンブロッキングモードでは、このメソッドはfalse
を返す場合があります。その場合、read()
メソッドを呼び出すことは不正であり、IllegalStateException
SE をスローしなければなりません。ReadListener.onDataAvailable()
が呼び出された場合、true
を返したこのメソッドの呼び出しは暗黙的です。このメソッドが
false
を返し、setReadListener(ReadListener)
経由でReadListener
が設定されている場合、コンテナーはデータ (または EOF) が使用可能になった後にReadListener.onDataAvailable()
(またはReadListener.onAllDataRead()
) を呼び出します。最初の呼び出しを除き、ReadListener.onDataAvailable()
は、このメソッドが呼び出され false が返された場合にのみ呼び出されます。- 戻り値:
- ブロックせずにデータを取得できる場合は
true
、そうでない場合はfalse
を返します。 - 導入:
- Servlet 3.1
- 関連事項:
setReadListener
読み取りが可能になったときに、提供されたReadListener
を呼び出すようServletInputStream
に指示します- パラメーター:
readListener
- 読み取りが可能になったときに通知されるReadListener
- 例外:
IllegalStateExceptionSE
- 次の条件のいずれかに該当する場合- 関連するリクエストはアップグレードされず、非同期も開始されません
- setReadListener は同じリクエストの範囲内で複数回呼び出されます。
NullPointerExceptionSE
- readListener が null の場合- 導入:
- Servlet 3.1
readAllBytes
このメソッドは、入力ストリームがブロッキングモードの場合にのみ使用できます。
- オーバーライド:
- クラス
InputStreamSE
のreadAllBytes
- 例外:
IllegalStateExceptionSE
- 入力ストリームがノンブロッキングモードのときにこのメソッドが呼び出された場合。IOExceptionSE
readNBytes
このメソッドは、入力ストリームがブロッキングモードの場合にのみ使用できます。
- オーバーライド:
- クラス
InputStreamSE
のreadNBytesSE
- 例外:
IllegalStateExceptionSE
- 入力ストリームがノンブロッキングモードのときにこのメソッドが呼び出された場合。IOExceptionSE
readNBytes
このメソッドは、入力ストリームがブロッキングモードの場合にのみ使用できます。
- オーバーライド:
- クラス
InputStreamSE
のreadNBytesSE
- 例外:
IllegalStateExceptionSE
- 入力ストリームがノンブロッキングモードのときにこのメソッドが呼び出された場合。IOExceptionSE