Streamreader:如何在读取时从if块中取出外部循环

时间:2014-03-18 01:08:15

标签: c# streamreader

我正在更新每日生成的文件中的一行,但我知道我要查找的行将在至少30,000行的前20行中。有没有办法在线路替换完成后取消流读取?我正在寻找的是更新错误行并覆盖现有文件。 (生成它的程序无法在创建文件之前修复它。

StreamReader sr = new StreamReader(strSourcePath);
    while (!sr.EndOfStream)
    {
         string line = sr.ReadLine();
         if (line.Contains("hello world")) 
         {
             line.Replace("hello world","Hello World!");
         }//if
    }//while

2 个答案:

答案 0 :(得分:3)

使用break;打破循环。

答案 1 :(得分:0)

根据Alexi的评论,我意识到无论如何我需要浏览整个文件,如果我正在通过StreamWriter处理它。 Break让我走出困境,但结果却不是运行程序的理想方式。

StreamReader sr = new StreamReader(strSourcePath);
StreamWriter swUpdatedFile = new StreamWriter(strSourcePath.Replace(".txt", ".dat"), false, Encoding.GetEncoding(1250));
while (!sr.EndOfStream)
{
      string line = sr.ReadLine();
      if (line.Contains("hello world"))
      {
           swUpdatedFile.WriteLine("Hello World!");

      }//if
      else 
      { 
           swUpdatedFile.WriteLine(line);
      }

  }//while