Не то, что я знаю; для некоторых сценариев вы можете использовать что-то вроде StreamReader
и использовать Peek
?
using(StreamReader reader = new StreamReader(stream))
{
/// ... lots of reading
int i = reader.Peek();
/// ... lots of reading
}
Однако я не думаю, что вы можете отправить произвольные данные обратно в поток, если вы не используете что-то вроде MemoryStream
и, таким образом, можете обезьяны с данными.
Даже если у вас есть Stream
, который доступен как для чтения, так и для записи (редко), тогда остается только один курсор, поэтому вам нужно быть осторожным, чтобы сбросить позицию после записи (так, чтобы ее можно было искать тоже, опять же, не часто); однако это не является надежным - некоторые потоки (например, сетевые потоки в TCP) будут обрабатывать запись как «отправить это на другой компьютер», и она никогда не будет возвращена чтением. И это не для поиска; -p