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.
À 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!