„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

Veröffentlicht am 08.11.2024
Durchsuche:534

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:

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

Bitte beachten Sie, dass dieser Ansatz möglicherweise nicht für große oder unendliche Streams geeignet ist, da dabei der Stream-Inhalt in den Speicher kopiert wird.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3