入力ストリームを 2 回読み取ることはできますか?

DDD
リリース: 2024-10-26 17:45:29
オリジナル
417 人が閲覧しました

 Can You Read an Input Stream Twice?

入力ストリームは 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!