在运行控制台应用程序时,我要将统计数据发送到控制台窗口。我希望定期将控制台的内容刷新到文本文件中,以及程序关闭的时间和时间。我认为console.out.writeline()可以工作,但它不会产生值。我无法跟踪写入控制台窗口的所有内容,因此基本上每隔6个小时我就想将当时显示的所有内容写到文本文件中。只是想知道这是否可能。提前谢谢。
发布于 2013-09-16 13:27:52
考虑到所有的事情,最好使用一些可以登录到控制台和文件的东西。因此,您不必调用Console.WriteLine,而是调用Logger.WriteLine,并将其写入两者。
您可以从控制台读取并写入文件,但这有点困难,而且并不完美。控制台屏幕缓冲区只能容纳这么多。如果您输出了大量数据,其中一些数据将被从缓冲区中推开。
您可以通过更改控制台窗口的属性来设置屏幕缓冲区的大小。
如果要从控制台读取数据,则必须读取控制台屏幕缓冲区。.NET Console类不提供对此的访问。最后,您必须调用Windows函数才能做到这一点。
几年前,我为一系列关于使用控制台API的文章开发了代码,不幸的是,发布这些文章的网站已经不在网上了。但是代码可以在http://www.mischel.com/pubs/consoledotnet.zip上使用。
如果要使用该代码获取控制台的内容,请执行以下操作:
Get the active console screen buffer by calling JConsole.GetActiveScreenBuffer
Call GetScreenBufferInfo to get the size of the screen buffer
Call ReadBlock to read as much of the buffer as you want这将返回一个ConsoleCharInfo结构的二维数组。然后,你可以通过这个过程,得到你需要的角色。
请注意,这并不一定会将输出到控制台的所有内容都获得。相反,它将获得当前屏幕缓冲区中的所有内容。如果应用程序编写的内容超过了屏幕缓冲区中的容量,您将无法获得滚动的信息。
https://stackoverflow.com/questions/18828721
复制相似问题