我正在更新每日生成的文件中的一行,但我知道我要查找的行将在至少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
答案 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