[英]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.