#c#
#c#
Вопрос:
FileStream fs = new FileStream("Myfile.Txt",FileMode.Open,FileAccess.Read);
StreamReader sr= new Streamreader(fs);
sr.BaseStream.Seek(0,SeekOrigin.Begin);
В этом коде используется BaseStream в этом коде.?
Seek — это метод, sr — это объект класса StreamReader, тогда что такое BaseStream
Ответ №1:
sr.BaseStream возвращает базовый поток, из которого считывается программа чтения потоков, вы можете использовать это для работы непосредственно с потоком.
В вашем примере sr.BaseStream и FileStream fs — это одно и то же.
Дополнительная информация:http://msdn.microsoft.com/en-us/library/system.io.streamreader.basestream.aspx
Обычно, однако, вы хотели бы работать с самим StreamReader, потому что это устраняет некоторые трудности при работе с потоками. Если вы приведете пример того, как вы хотели бы использовать stream, я посмотрю, смогу ли я привести возможно более простой пример, используя StreamReader
Ответ №2:
Вы могли бы сократить свой код:
//FileStream fs = new FileStream("Myfile.Txt",FileMode.Open,FileAccess.Read);
//StreamReader sr= new Streamreader(fs);
StreamReader sr = File.OpenText("Myfile.Txt"); // using-block omitted
sr.BaseStream.Seek(0,SeekOrigin.Begin);
И тогда вы больше не сможете использовать fs
. Поток все еще создается, и BaseStream предоставляет вам доступ.
И обратите внимание, что вы должны быть осторожны, чтобы очистить программу чтения перед поиском в потоке.