Beim Abrufen und Speichern von Daten aus dem Web suchen Entwickler häufig nach effizienten Methoden. Eine dieser Methoden besteht darin, denselben Eingabestream mehrmals zu verwenden. Dies wirft die Frage auf: Ist es möglich, denselben Eingabestream zweimal zu lesen?
Eingabestreams kopieren
Ein Eingabestream kann nicht direkt zweimal gelesen werden. Es kann jedoch mit org.apache.commons.io.IOUtils.copy in ein Byte-Array kopiert werden. Dieses Array kann dann verwendet werden, um mehrere ByteArrayInputStream-Objekte zum anschließenden Lesen zu erstellen.
Unter Verwendung der Apache Commons IO-Bibliothek finden Sie hier ein Beispiel dafür, wie ein Eingabestream zweimal gelesen wird:
<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>
Hinweis:Dieser Ansatz funktioniert zwar für kleine Streams wie Bilder, ist jedoch nicht für große oder unendliche Streams geeignet, da dies zu Speicherproblemen führen kann.
Das obige ist der detaillierte Inhalt vonKönnen Sie einen Eingabestream zweimal lesen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!