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!