вопросы по обработке файлов c # 2.0

#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 предоставляет вам доступ.

И обратите внимание, что вы должны быть осторожны, чтобы очистить программу чтения перед поиском в потоке.