ホームページ >Java >&#&チュートリアル >入力ストリームを 2 回読み取ることはできますか?
Web からデータを取得および保存するとき、開発者は効率的な方法を模索することがよくあります。このような方法の 1 つは、同じ入力ストリームを複数回利用することです。同じ入力ストリームを 2 回読み取ることは可能ですか?
入力ストリームのコピー
入力ストリームを直接 2 回読み取ることはできません。ただし、org.apache.commons.io.IOUtils.copy を使用してバイト配列にコピーすることはできます。この配列を使用して、後続の読み取り用に複数の ByteArrayInputStream オブジェクトを作成できます。
Apache Commons IO ライブラリを使用して、入力ストリームを 2 回読み取る方法の例を次に示します。
<code class="java">ByteArrayOutputStream baos = new ByteArrayOutputStream(); org.apache.commons.io.IOUtils.copy(in, baos); byte[] bytes = baos.toByteArray(); // either while (needToReadAgain) { ByteArrayInputStream bais = new ByteArrayInputStream(bytes); yourReadMethodHere(bais); } // or ByteArrayInputStream bais = new ByteArrayInputStream(bytes); while (needToReadAgain) { bais.reset(); yourReadMethodHere(bais); }</code>
注: このアプローチは画像などの小さなストリームには機能しますが、メモリの問題が発生する可能性があるため、大規模なストリームや無限のストリームには適していません。
以上が入力ストリームを 2 回読み取ることはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。