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

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

DDD
Libérer: 2024-10-26 17:45:29
original
542 Les gens l'ont consulté

 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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal