Maison  >  Article  >  Java  >  Comment réutiliser un flux d’entrée pour plusieurs lectures en Java ?

Comment réutiliser un flux d’entrée pour plusieurs lectures en Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 08:15:03670parcourir

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

Réutiliser les flux d'entrée

La lecture deux fois du même flux d'entrée peut être utile dans divers scénarios. Un de ces scénarios consiste à charger une image distante, à l'enregistrer localement, puis à accéder à l'image enregistrée. Pour y parvenir, il est plus efficace de réutiliser le même flux d'entrée au lieu d'en créer un nouveau.

Une façon de réutiliser un flux d'entrée consiste à copier son contenu dans un tableau d'octets. Cela peut être fait en utilisant la méthode org.apache.commons.io.IOUtils.copy. Le tableau d'octets résultant peut ensuite être utilisé pour créer plusieurs objets ByteArrayInputStream, qui peuvent être lus à plusieurs reprises.

Voici un exemple de la façon de procéder :

<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>

Veuillez noter que cette approche peut ne convient pas aux flux volumineux ou infinis, car cela implique de copier le contenu du flux en mémoire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn