【问题标题】:I want to read data from a text file via StreamReader, edit a specific string and write it to the file vis StreamWriter我想通过 StreamReader 从文本文件中读取数据,编辑特定字符串并将其写入文件中
【发布时间】:2020-09-14 12:25:34
【问题描述】:

我想通过 StreamReader 从文本文件中读取数据,编辑特定行,然后通过 StreamWriter 将其写入文件(不是附加字符串而是更新它)。

我已经创建了文件并用字符串填充了它。以下代码仅用于编辑该文件中的字符串。

代码运行平稳,但不会更新数据。它只是让字符串在文件中保持原样。

var path=@"C:\sample.txt";
StringBuilder data = new StringBuilder();
using (StreamReader read=new StreamReader(path))
{                
     var line = "";
     var fields = line.Split(',');
     while (!read.EndOfStream)
     {
         line = read.ReadLine();
         fields = line.Split(',');
         if (fields[0] == txtAccountNumber.ToString())
              data.AppendLine(fields[0] + "," +
                              fields[1] + "," +
                              account.Balance.ToString());
         else
              data.AppendLine(line);
     }
read.Close();
} 

using(StreamWriter write=new StreamWriter(path))
{                
    write.WriteLine(data);
    write.Flush();
    write.Close();
}

【问题讨论】:

  • 代码txtAccountNumber.ToString() 看起来很可疑。如果txtAccountNumber 是一个winforms 文本框,那么你应该写txtAccountNumber.Text。 Msdn:docs.microsoft.com/en-us/dotnet/api/…
  • 非常感谢。这就是问题所在。
  • 我忽略了那部分
  • 很奇怪。它是如何编译的?
  • 好眼光@mortb,单从物名来看,印象深刻!

标签: c# streamreader streamwriter


【解决方案1】:

我发现了错误。我忘了把 .Text 放在 txtAccountNumber.ToString()

var path=@"C:\sample.txt";
StringBuilder data = new StringBuilder();
using (StreamReader read=new StreamReader(path))
{                
     var line = "";
     var fields = line.Split(',');
     while (!read.EndOfStream)
     {
         line = read.ReadLine();
         fields = line.Split(',');
         if (fields[0] == txtAccountNumber.Text.ToString()) //*Point of error
              data.AppendLine(fields[0] + "," +
                              fields[1] + "," +
                              account.Balance.ToString());
         else
              data.AppendLine(line);
     }
read.Close();
} 

using(StreamWriter write=new StreamWriter(path))
{                
    write.WriteLine(data);
    write.Flush();
    write.Close();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 2020-12-25
    • 2014-07-28
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 2021-09-05
    相关资源
    最近更新 更多