1

このコードの目的は、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();
     }
4

3 に答える 3

3

ファイル自体を閉じる前に、ストリームをフラッシュまたは閉じます。

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

スタイルに関する注意 - Stream(あらゆる種類の) を作成する場合、または を実装する任意のオブジェクトをIDisposable作成する場合は、次のusingステートメントを使用して作成します。

using(var writeIt = new StreamWriter(NewFile))
{
  // use writeIt here - it will dispose properly
}
于 2013-03-21T21:38:46.703 に答える
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);
      }
    }
  }
}
于 2013-03-21T21:40:02.333 に答える
2

usingストリームの周りで使用する場合、フラッシュを呼び出して明示的に閉じる必要はありません。ブロックのスコープを離れるとすぐに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();
    }
于 2013-03-21T21:44:37.837 に答える