使用C#中对象的值写入文件

时间:2013-03-21 21:37:03

标签: c# asp.net web-applications asp.net-mvc-4

我对此代码的目标是使用foreach循环遍历每个对象并将当前字符串值写入txt文件。

我正在使用“Woof”和“Bull”作为测试。 Bull是我的AverageValues类中的字符串变量。

不幸的是,它目前不会将bull的值写入文件,但是,它会创建该文件。

我认为这很容易解决,我现在似乎无法找到它。

所有帮助将不胜感激!

    public void doStuff()
    {
        AverageValues AVS = new AverageValues();
        AVS.Bull = "Woof";
        string path = "C:\\users\\kjenks11\\Averages.txt";
        FileStream NewFile = File.Create(path);
        StreamWriter writeIt = new StreamWriter(NewFile);
        List<AverageValues> AV = new List<AverageValues>();
        AV.Add(AVS);

        foreach (var value in AV)
        {
                writeIt.Write(value.Bull);
        } 
        NewFile.Close();
     }

3 个答案:

答案 0 :(得分:3)

Flush或在关闭文件之前关闭流:

foreach (var value in AV)
{
     writeIt.WriteLine(value.Bull);
}
writeIt.Flush();
writeIt.Close();

关于样式的注意事项 - 在创建Stream(任何类型)时,或者更确切地说,任何实现IDisposable的对象时,使用using statement创建它:

using(var writeIt = new StreamWriter(NewFile))
{
  // use writeIt here - it will dispose properly
}

答案 1 :(得分:3)

您需要刷新才能将数据写入文件。您也可以考虑向编写者添加using语句,以便在完成后释放资源。

public void doStuff()
{
  AverageValues AVS = new AverageValues();
  AVS.Bull = "Woof";
  string path = "C:\\users\\kjenks11\\Averages.txt";
  using (var NewFile = File.Create(path))
  {
    using (var writeIt = new StreamWriter(NewFile))
    {
      List<AverageValues> AV = new List<AverageValues> {AVS};
      foreach (var value in AV)
      {
        writeIt.Write(value.Bull);
      }
    }
  }
}

答案 2 :(得分:2)

如果您在流中使用using,则无需显式调用flush和close。一旦离开using块'范围,流将被关闭并处理掉。收盘将为您打电话。

  public void doStuff()
    {
        AverageValues AVS = new AverageValues();
        AVS.Bull = "Woof";
        string path = "C:\\users\\kjenks11\\Averages.txt";
        FileStream NewFile = File.Create(path);
        List<AverageValues> AV = new List<AverageValues>();
        AV.Add(AVS);

        using(StreamWriter writeIt = new StreamWriter(NewFile))
        {
           foreach (var value in AV)
           {
                writeIt.Write(value.Bull);
           } 
        }
       NewFile.Close();
    }