将控制台中显示的所有数据输出到.txt文件

时间:2013-11-18 00:48:05

标签: c#

我目前正在将服务器/客户端聊天程序作为C#中的控制台应用程序。我正在处理命令(/ disconnect,/ about等),我想做一个/ savelog命令。

我的问题是,如何将整个控制台输出写入.txt文件?我已经知道在检测到命令时如何调用该函数,但我该如何实际完成这项工作呢?

例如:

'>>已建立连接

'>>消息:嗨

'>>(服务器)消息:你好

'>>消息:/ savelog

'>>讯息:SAVED TO dir

2 个答案:

答案 0 :(得分:2)

FileStream fstream = new FileStream("out.txt", FileMode.Create);
var writer = new StreamWriter(fstream);
writer.AutoFlush = true;
Console.SetOut(writer);
Console.SetError(writer);

并参考这个:Source

答案 1 :(得分:0)

.NET框架不包含用于读取控制台窗口内容的机制。如果您确实需要这样做,则需要直接使用Windows API。

您需要的特定API函数是ReadConsoleOutputCharacter,它会将控制台缓冲区中的字符块复制到数组中。有一个很好的例子,说明如何在PInvoke.Net上使用它。

但是......如果您需要记录,则应在将数据写入屏幕时完成。依赖于控制台状态不一定足够,因为有各种各样的事情可能导致控制台缓冲区中包含意外数据。