InputStream data = realResponse.getEntity().getContent();
byte[] preview = new byte[100];
data.read(preview, 0, 100);
//後でInputStreamを参照したいのですが、100バイトではなく、ストリームの最初から参照したいのです。100でmark()
を試し、その後reset()
を試しました。最初の100バイトを読みましたが、それも機能しません。
何か案は?おそらくばかげた間違い..それを見ないだけです。
Java.io.InputStream オブジェクトのmark()
を使用する場合、InputStreamが実際にマークの使用をサポートしているかどうかをmarkSupported()
メソッドで確認する必要があります。 APIによると、InputStream
クラスはそうではありませんが、 Java.io.BufferedInputStream クラスはそうします。たぶん、次のようなBufferedInputStream
オブジェクト内にストリームを埋め込む必要があります。
InputStream data = new BufferedInputStream(realResponse.getEntity().getContent());
// data.markSupported() should return "true" now
data.mark(some_size);
// work with "data" now
...
data.reset();
InputStream
がマークをサポートしている場合(markSupported()
メソッドで確認できます)、以下が機能するはずです。
_InputStream data = realResponse.getEntity().getContent();
byte[] preview = new byte[100];
data.mark(100);
data.read(preview, 0, 100);
data.reset();
_
ただし、data.read(preview, 0, 100)
はnot一度に100バイトを読み取ることが保証されているため、読み取りが少なくなる可能性があることに注意してください。