Поток не должен автоматически закрываться только потому, что вы прочитали его до конца.Возможно, вы сможете использовать mark()
в начале, а затем позвонить reset()
, чтобы вернуться к цели.Однако это зависит от того, поддерживает ли поток это.
Если вы используете файл, вы можете рассмотреть возможность использования RandomAccessFile
.Если это поток из сети, может не быть концепции его «перемотки» - в этом случае вам, вероятно, следует сначала прочитать все данные и скопировать их в ByteArrayOutputStream
: затем вы можете преобразовать их в байтовый массив исоздайте столько ByteArrayInputStream
s, сколько вы хотите, подкрепленные одними и теми же данными.