Ответ Эми будет работать с некоторыми файлами, но в зависимости от кодировки основного потока вы можете получить неожиданные результаты.
Например, если поток имеет формат UTF-8 и имеет преамбулу, то StreamReader будет использовать это для обнаружения кодировки, а затем отключит некоторые внутренние флаги, которые сообщат ему об обнаружении кодировки и проверке преамбулы. Если вы вернете позицию потока в начало, программа чтения потока снова будет использовать преамбулу, но во второй раз включит ее в вывод. Не существует общедоступных методов для сброса этого состояния кодирования и преамбулы, так что, если вам нужно «перемотать» потоковое считыватель, самое безопасное - это найти основной поток в начале (или установить позицию), как показано, и создать новый StreamReader простого вызова DiscardBufferedData () в StreamReader будет недостаточно.