InputStream
の形になっているサンプルを作成しようとしていますSocketInputStream
。サポートされていませreset()
んmark()
。この入力ストリームを処理すると、eof に到達して閉じられるため、他の操作のために再度処理できます。このプロセスを使用したいのと同じように、InputStream
と を許可reset()
していmarkSupported()
ます。
InputStream
このような状況で、私はどのように対処できますか。
明らかに、デフォルトではandSocketInputStream
はサポートされていません。ネットワーク ストリームは、位置を変更できるものではありません。ストリームが元に戻らないように、既に読み取られたバイトを格納しているものは何もありません。mark()
reset()
つまり、その機能を拡張SocketInputStream
して提供することができます。メソッドをオーバーライドして、または他の実行中のSocketInputStream.read(byte b[], int off, int length)
に情報を保存する必要があります。マークの位置が変更されるたびに、内部配列の最後にいる場合は、発行された a のみから読み取る必要があります。ByteArrayOutputStream
byte[]
byte[]
super.read(...)
ただし、正しく理解するのはかなりの作業であり、ここでのメモリには非常に注意する必要があります。