Reutilizando fluxos de entrada
Ler o mesmo fluxo de entrada duas vezes pode ser útil em vários cenários. Um desses cenários é carregar uma imagem remota, salvá-la localmente e depois acessar a imagem salva. Para conseguir isso, é mais eficiente reutilizar o mesmo fluxo de entrada em vez de criar um novo.
Uma maneira de reutilizar um fluxo de entrada é copiar seu conteúdo para uma matriz de bytes. Isso pode ser feito usando o método org.apache.commons.io.IOUtils.copy. A matriz de bytes resultante pode então ser usada para criar vários objetos ByteArrayInputStream, que podem ser lidos repetidamente.
Aqui está um exemplo de como fazer isso:
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);
}
Observe que esta abordagem pode não ser adequada para fluxos grandes ou infinitos, pois envolve a cópia do conteúdo do fluxo para a memória.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3