java.io.InputStreamストリームの先頭から複数回読み取ろうとしています。
明らかに、に戻るストリームのtrue場合、markSupported()試して使用してから、ストリームを最初から再度読み取ることができます。mark(availableBytes)reset()
ほとんどのストリームはマークをサポートしておらず、マークをサポートしているもの (たとえばjava.io.BufferedInputStream) 一時的なバイト配列にデータをコピーしますが、これはメモリ消費などの点で適切ではありません。
メソッドがパラメーターとして受け取った場合、java.io.InputStreamそれを閉じてから再度開いて、同じ元のストリームを一番上にリセットして、再度読み取ることができますか?
InputStream元のファイルをメモリ (yak!) または一時ファイルに書き込む以外に、このトリックを実行する方法を見つけることができませんでしInputStreamた。ストリームをもう一度上から読み取る必要がある場合は、それらの一時的な場所に新しいファイルを開きます。