为什么不管console.SetOut(StreamWriter)写入我的文件?

时间:2016-10-13 19:32:54

标签: c# io console-application filestream streamwriter

创建一个控制台应用程序,我试图设置一个日志文件来跟踪我的应用程序的活动。 这就是我设置FileStream和Writer的方式。

FileStream logstrm;
StreamWriter logwriter;
logstrm = new FileStream("file.txt", FileMode.OpenOrCreate, FileAccess.Write);
logwriter = new StreamWriter(logstrm);

在调用SetOut之前,以下内容正确地将文本输出到控制台。

Console.WriteLine("LOG FILES CREATED");

但是,一旦我执行了以下操作,我希望将文本写入file.txt,但是当我打开它时文件中没有任何内容。

Console.SetOut(logwriter);
Console.WriteLine("TEXT EXPECTED TO BE IN FILE.TXT");

任何想法或我只是这样做完全错了吗?

2 个答案:

答案 0 :(得分:0)

只是您不要关闭输出文件

logwriter.Close();

使用Flush或关闭文件

PS:另一个测试:您可以继续写入控制台,直到超出内部缓冲区大小,然后您将看到一些字符写入文件

答案 1 :(得分:0)

文件I / O被缓冲,可能需要刷新才能实际写入文件。

您可以通过调用StreamWriter.Flush显式刷新到文件;或者,您可以设置AutoFlush,以便在每次调用Write之后刷新流。

文件会在Close上自动刷新。