Heim >Java >javaLernprogramm >Wie kann ich einen InputStream in Java mehrmals lesen?

Wie kann ich einen InputStream in Java mehrmals lesen?

Barbara Streisand
Barbara StreisandOriginal
2024-10-26 22:20:291037Durchsuche

How can I read an InputStream multiple times in Java?

Kopieren von InputStream für mehrere Lesevorgänge

Das zweimalige Lesen eines Eingabestreams stellt aufgrund der sequentiellen Natur des Datenverbrauchs eine Herausforderung dar. Durch die Nutzung der Apache Commons IO-Bibliothek können Sie jedoch den Inhalt des Streams in eine wiederverwendbare Quelle kopieren.

Lösung mit ByteArrayOutputStream und ByteArrayInputStream:

  1. Verwenden Sie IOUtils .copy, um den Inhalt des Streams in einen ByteArrayOutputStream zu übertragen.
  2. Konvertieren Sie den ByteArrayOutputStream zur Speicherung in ein Byte-Array.

So lesen Sie den Stream mehrmals:

// 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);
}

Hinweis: Dieser Ansatz eignet sich für relativ kleine Datenströme. Erwägen Sie bei großen oder unendlichen Streams Streaming-Ansätze, um eine Speichererschöpfung zu vermeiden.

Das obige ist der detaillierte Inhalt vonWie kann ich einen InputStream in Java mehrmals lesen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn