0

InputStreamの形になっているサンプルを作成しようとしていますSocketInputStream。サポートされていませreset()mark()。この入力ストリームを処理すると、eof に到達して閉じられるため、他の操作のために再度処理できます。このプロセスを使用したいのと同じように、InputStreamと を許可reset()していmarkSupported()ます。

InputStreamこのような状況で、私はどのように対処できますか。

4

1 に答える 1

1

明らかに、デフォルトではandSocketInputStreamはサポートされていません。ネットワーク ストリームは、位置を変更できるものではありません。ストリームが元に戻らないように、既に読み取られたバイトを格納しているものは何もありません。mark()reset()

つまり、その機能を拡張SocketInputStreamして提供することができます。メソッドをオーバーライドして、または他の実行中のSocketInputStream.read(byte b[], int off, int length)に情報を保存する必要があります。マークの位置が変更されるたびに、内部配列の最後にいる場合は、発行された a のみから読み取る必要があります。ByteArrayOutputStreambyte[]byte[]super.read(...)

ただし、正しく理解するのはかなりの作業であり、ここでのメモリには非常に注意する必要があります。

于 2012-09-28T22:22:07.173 に答える