我有简单的console application
和list
个文件。
我的list
上的每个循环都想将当前文件名写入简单的txt file
:
String path = @"C:\log.txt"; // location whre to save my txt file
List<string> files = new List<string>(); // my files list
using (FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write))
using (StreamWriter sw = new StreamWriter(fs))
{
foreach (string file in files)
{
sw.WriteLine(file);
}
}
答案 0 :(得分:1)
StreamWriter
缓冲其输出。如果内部缓冲区中有足够的字节,如果您调用Flush()
或者流已关闭/处理,它将写入文件。
如果您希望输出立即显示 ,则必须在每行写入sw之后添加对sw.Flush()
的调用。
答案 1 :(得分:0)
为什么我可以看到仅在循环结束时写入的行。
由于文件仅在StreamWriter.Dispose
运行时被刷新到磁盘,因此在using
语句的末尾。同时,它被缓存在内存中。
如果我的应用程序在中间崩溃会发生什么 循环?我的日志文件是空的吗?
这取决于程序何时终止以及该特定时刻流所处的状态。如果它能够完成并刷新到磁盘,您将看到日志文件。
如果您担心这段代码可能会导致您的应用程序因某些预期错误而崩溃,请将您的代码包装在try-catch
块中,并处理这些异常。