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的开头而不是结尾(如果这就是我的代码实际发生的情况)?

StreamReader的某种问题

您可以将BaseStreamPosition设置为0,这仅在您的underlying stream支持Position时有效。我希望你不是这样。

public DataScraper GetDataValues(StreamReader sr)
{
  if(sr.BaseStream != null&&sr.BaseStream.CanSeek) sr.BaseStream.Position = 0;
  //remaining code
  //....
  //....
}