чтение входного потока в Java - PullRequest
       32

чтение входного потока в Java

0 голосов
/ 20 декабря 2010

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

Ответы [ 2 ]

1 голос
/ 20 декабря 2010

Поток не закрывается автоматически, когда встречается конец потока. Кстати, я не уверен, почему вы хотите сохранить поток открытым, если конец потока все равно достигнут. Если вы планируете читать из потока два раза (две итерации по одному и тому же потоку по какой-то странной причине), вы можете закрыть первый и открыть второй, если это возможно (достаточно просто для потоков файлов). Другим методом будет считывание всей информации и ее обработка в случае, если данные, с которыми вы работаете, не слишком велики (опять же, это зависит от конкретных потребностей вашего приложения).

1 голос
/ 20 декабря 2010

Поток не должен автоматически закрываться только потому, что вы прочитали его до конца.Возможно, вы сможете использовать mark() в начале, а затем позвонить reset(), чтобы вернуться к цели.Однако это зависит от того, поддерживает ли поток это.

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

...