ホームページ  >  記事  >  Java  >  Java で InputStream を複数回読み取るにはどうすればよいですか?

Java で InputStream を複数回読み取るにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-26 22:20:29925ブラウズ

How can I read an InputStream multiple times in Java?

複数の読み取りのための InputStream のコピー

データ消費の連続的な性質により、入力ストリームを 2 回読み取ると問題が発生します。ただし、Apache Commons IO ライブラリを利用すると、ストリームのコンテンツを再利用可能なソースにコピーできます。

ByteArrayOutputStream と ByteArrayInputStream を使用した解決策:

  1. IOUtils を利用する.copy を使用して、ストリームのコンテンツを ByteArrayOutputStream に転送します。
  2. ByteArrayOutputStream をストレージ用のバイト配列に変換します。

ストリームを複数回読み取るには:

// Option 1: Iteratively create `ByteArrayInputStream` objects
while (needToReadAgain) {
    ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
    yourReadMethodHere(bais);
}

// Option 2: Reset the same `ByteArrayInputStream` repeatedly
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
while (needToReadAgain) {
    bais.reset();
    yourReadMethodHere(bais);
}

注: このアプローチは、比較的小さなデータ ストリームに適しています。大規模なストリームまたは無限のストリームの場合は、メモリの枯渇を避けるためにストリーミング アプローチを検討してください。

以上がJava で InputStream を複数回読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。