Réutilisation des 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 :
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);
}
Veuillez noter que cette approche peut ne pas convenir aux flux volumineux ou infinis, car elle implique de copier le contenu du flux en mémoire.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3