Heim > Java > javaLernprogramm > Hauptteil

Wie lese ich mehrmals aus einem Eingabestream, ohne ihn zu ändern?

Mary-Kate Olsen
Freigeben: 2024-10-26 04:36:31
Original
379 Leute haben es durchsucht

How to Read from an Input Stream Multiple Times Without Modifying it?

Beibehalten von Eingabeströmen für sequentielles Lesen

Das mehrmalige Lesen aus einem Eingabestrom, ohne ihn zu ändern oder einen neuen Stream zu erstellen, kann in bestimmten Fällen erforderlich sein B. beim Herunterladen eines Bildes und beim lokalen Speichern. Glücklicherweise ist es möglich, einen Eingabestream für wiederholten Zugriff zu duplizieren.

Ein Ansatz besteht darin, die Methode org.apache.commons.io.IOUtils.copy zu verwenden, um den Inhalt des Eingabestreams in ein Byte-Array zu übertragen. Dieses Byte-Array kann dann wiederholt mit einem ByteArrayInputStream gelesen werden.

ByteArrayOutputStream baos = new ByteArrayOutputStream();
org.apache.commons.io.IOUtils.copy(in, baos);
byte[] bytes = baos.toByteArray();
Nach dem Login kopieren

Von dort aus können Sie einen der beiden Ansätze verfolgen:

  • Wiederholte Erstellung von ByteArrayInputStream:

    while (needToReadAgain) {
      ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
      yourReadMethodHere(bais);
    }
    Nach dem Login kopieren
  • Zurücksetzen von ByteArrayInputStream:

    ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
    while (needToReadAgain) {
      bais.reset();
      yourReadMethodHere(bais);
    }
    Nach dem Login kopieren

Vorsicht: Das Kopieren des gesamten Streams in den Speicher ist aufgrund der möglichen Speichererschöpfung möglicherweise nicht für große oder unendliche Streams geeignet. In solchen Fällen können alternative Ansätze wie die Verwendung eines Puffers oder einer separaten Datenstruktur erforderlich sein.

Das obige ist der detaillierte Inhalt vonWie lese ich mehrmals aus einem Eingabestream, ohne ihn zu ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!