Heim  >  Artikel  >  Java  >  Wie verwende ich einen Eingabestream für mehrere Lesevorgänge in Java wieder?

Wie verwende ich einen Eingabestream für mehrere Lesevorgänge in Java wieder?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-26 08:15:03670Durchsuche

How to Reuse an Input Stream for Multiple Reads in Java?

Eingabestreams wiederverwenden

Das zweimalige Lesen desselben Eingabestreams kann in verschiedenen Szenarien nützlich sein. Ein solches Szenario besteht darin, ein Remote-Bild zu laden, es lokal zu speichern und dann auf das gespeicherte Bild zuzugreifen. Um dies zu erreichen, ist es effizienter, denselben Eingabestream wiederzuverwenden, anstatt einen neuen zu erstellen.

Eine Möglichkeit, einen Eingabestream wiederzuverwenden, besteht darin, seinen Inhalt in ein Byte-Array zu kopieren. Dies kann mit der Methode org.apache.commons.io.IOUtils.copy erfolgen. Das resultierende Byte-Array kann dann verwendet werden, um mehrere ByteArrayInputStream-Objekte zu erstellen, die wiederholt gelesen werden können.

Hier ist ein Beispiel dafür:

<code class="java">ByteArrayOutputStream baos = new ByteArrayOutputStream();
org.apache.commons.io.IOUtils.copy(in, baos);
byte[] bytes = baos.toByteArray();

// Option 1: Read the byte array multiple times
while (needToReadAgain) {
    ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
    yourReadMethodHere(bais);
}

// Option 2: Reset the input stream to read from it again
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
while (needToReadAgain) {
    bais.reset();
    yourReadMethodHere(bais);
}</code>

Bitte beachten Sie, dass dieser Ansatz möglicherweise nicht für große oder unendliche Streams geeignet, da dabei die Stream-Inhalte in den Speicher kopiert werden müssen.

Das obige ist der detaillierte Inhalt vonWie verwende ich einen Eingabestream für mehrere Lesevorgänge in Java wieder?. 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