Maison  >  Article  >  Java  >  Pouvez-vous lire un flux d’entrée deux fois ?

Pouvez-vous lire un flux d’entrée deux fois ?

DDD
DDDoriginal
2024-10-26 17:45:29411parcourir

 Can You Read an Input Stream Twice?

Les flux d'entrée peuvent-ils être lus deux fois ?

Lors de la récupération et du stockage de données sur le Web, les développeurs recherchent souvent des méthodes efficaces. L’une de ces méthodes consiste à utiliser plusieurs fois le même flux d’entrée. Cela soulève la question : est-il possible de lire deux fois le même flux d'entrée ?

Copier les flux d'entrée

Un flux d'entrée ne peut pas être lu directement deux fois. Cependant, il peut être copié dans un tableau d'octets à l'aide de org.apache.commons.io.IOUtils.copy. Ce tableau peut ensuite être utilisé pour créer plusieurs objets ByteArrayInputStream pour une lecture ultérieure.

Exemple

À l'aide de la bibliothèque Apache Commons IO, voici un exemple de la façon de lire deux fois un flux d'entrée :

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

Remarque : Bien que cette approche fonctionne pour les petits flux comme les images, elle ne convient pas aux flux volumineux ou infinis car elle peut entraîner des problèmes de 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