C#StreamWriter没有写入文件

rd4*_*d42 2 c# streamwriter

basicLog是名称和时间戳列表.我想把它们写到一个文件中.我得到的两个错误是';' 在StreamWriter行和'file'上.在第二行.

';' 错误是:可能出错的空语句文件中的错误是:当前上下文中不存在名称"file".

文件创建得很好,但没有任何内容写入它.我对当前上下文中不存在的文件感到困惑,因为在创建之前的行上.感谢您的任何帮助.

foreach (BasicLog basicLog in emailAttach)
{
    using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\\sorted.txt", true));
    file.WriteLine(basicLog.LastName + " - " + basicLog.InOrOut + " - " + basicLog.EventTime + "\n");
}
Run Code Online (Sandbox Code Playgroud)

Hen*_*man 5

是的,你确实有一个错误的空声明.

除掉 ';' 并缩进以显示原因:

foreach (BasicLog basicLog in emailAttach)
{
   using (System.IO.StreamWriter file = 
            new System.IO.StreamWriter(@"C:\\sorted.txt", true))  //;
   {
      file.WriteLine(basicLog.LastName + " - " + basicLog.InOrOut + " - "
             + basicLog.EventTime + "\n");
   }
}
Run Code Online (Sandbox Code Playgroud)

WriteLine()语句(应该)在using()的控制之下.在{}作出这样的清晰.

这将有效,但请注意,它是非常低效的,您要重新打开文件(for append)多次.

因此最好反转foreach/using:

using (System.IO.StreamWriter file = 
      new System.IO.StreamWriter(@"C:\\sorted.txt", true)) 
{
   foreach (BasicLog basicLog in emailAttach)
   {
        file.WriteLine(basicLog.LastName + " - " + basicLog.InOrOut + " - " 
            + basicLog.EventTime + "\n");
   }
}
Run Code Online (Sandbox Code Playgroud)