IO输出与预期不同

时间:2015-04-27 13:37:02

标签: c# io

我有一个包含以下内容的.txt文件:

123456
45789
check
check

我想将check替换为now,我写了下面的代码,但结果并不像我预期的那样:

123456
45789
now
nowheck

我想知道为什么最后一行成为nowheck

我的代码:

StreamReader reader = new StreamReader(File.OpenRead(@"C:\Users\jzhu\Desktop\test1.txt"));
string fileContent = reader.ReadToEnd();
reader.Close();
fileContent = fileContent.Replace("check", "now");
StreamWriter writer = new StreamWriter(File.OpenWrite(@"C:\Users\jzhu\Desktop\test1.txt"));
writer.Write(fileContent);
writer.Close();

3 个答案:

答案 0 :(得分:5)

问题是File.OpenWrite正在重新打开同一个文件,用于编写而不会先截断它

您可以使用File.Create代替,或者更好地使用简化阅读和撰写文字的方法:

string path = @"C:\Users\jzhu\Desktop\test1.txt";
string fileContent = File.ReadAllText(path);
fileContent = fileContent.Replace("check", "now");
File.WriteAllText(path, fileContent);

答案 1 :(得分:1)

File.OpenWrite正在重新打开同一个文件。 要避免此问题,请尝试使用File.Create

答案 2 :(得分:0)

尝试将输出写入第二个文件。应该是正确的。问题是原始内容仍然存在。第二次打开文件时需要截断文件。