繁体   English   中英

C#StreamWriter没有写入文件

[英]C# StreamWriter not writing to file

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");
}

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

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

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");
   }
}

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");
   }
}

哎呀在使用线的末尾有一个分号???

也许你的意图是:

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"); 
    } 
}

好奇,今天早上发生了同样的事情:-)

您的file实例将在此行之后立即获得Disposed(因为您正在using ):

using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\\sorted.txt", true));

将其更改为

System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\\sorted.txt", true);

或完整的代码,

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

或者正确using

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");
    }
}

在写入文件之前,您正在处理StreamWriter 重构到这个:

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");
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM