StreamReader的某种问题
本文关键字:问题 StreamReader | 更新日期: 2023-09-27 18:29:00
我在c#中遇到StreamReader对象的问题。我将StreamReader对象传递给一个函数,然后通读它以收集有关其内容的一些信息。一旦我通过代码来收集信息,当我将它传递给后续函数时,我认为它是空的。
public DataScraper GetDataValues(StreamReader sr)
{
DataScraper dsGd = new DataScraper();
string line = string.Empty;
int intCurrentLine = 0;
int intLineAskingPrice = 0;
int intLineHOADues = 0;
int intLineTaxes = 0;
while ((line = sr.ReadLine()) != null)
{
if (line.Contains("For Sale: $"))
intLineAskingPrice = intCurrentLine;
if (line.Contains(@"<span>HOA Fee</span>"))
intLineHOADues = intCurrentLine - 1;
if (line.Contains("<em>Annually:</em>"))
intLineTaxes = intCurrentLine + 1;
intCurrentLine++;
}
//<span>HOA Fee</span>
dsGd.intAskingPrice = GetAskingPrice(sr, intLineAskingPrice);
dsGd.intHOADues = GetHOADues(sr, intLineHOADues);
dsGd.intTaxes = GetTaxes(sr, intLineTaxes);
return dsGd;
}
有什么想法吗?我如何通过后续函数传入StreamReader对象,并处于StreamReader的开头而不是结尾(如果这就是我的代码实际发生的情况)?
您可以将BaseStream
的Position
设置为0
,这仅在您的underlying stream
支持Position
时有效。我希望你不是这样。
public DataScraper GetDataValues(StreamReader sr)
{
if(sr.BaseStream != null&&sr.BaseStream.CanSeek) sr.BaseStream.Position = 0;
//remaining code
//....
//....
}