«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как повторно использовать входной поток для многократного чтения в Java?

Как повторно использовать входной поток для многократного чтения в Java?

Опубликовано 8 ноября 2024 г.
Просматривать:454

How to Reuse an Input Stream for Multiple Reads in Java?

Повторное использование входных потоков

Дважды чтение одного и того же входного потока может быть полезно в различных сценариях. Один из таких сценариев — загрузка удаленного изображения, сохранение его локально и последующий доступ к сохраненному изображению. Чтобы добиться этого, более эффективно повторно использовать один и тот же входной поток вместо создания нового.

Один из способов повторного использования входного потока — копирование его содержимого в массив байтов. Это можно сделать с помощью метода org.apache.commons.io.IOUtils.copy. Полученный массив байтов затем можно использовать для создания нескольких объектов ByteArrayInputStream, которые можно многократно читать.

Вот пример того, как это сделать:

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);
}

Обратите внимание, что этот подход может не подойти для больших или бесконечных потоков, поскольку он предполагает копирование содержимого потока в память.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3