将控制台应用屏幕的所有行复制到文本文件中

本文关键字:复制 文本 文件 应用 控制台 屏幕 | 更新日期: 2023-09-27 18:11:21

我有一个控制台应用程序,它通过Console.Writeline做了大量的日志记录到屏幕上。

缺少将每个Console.Writeline转换为文件写入,或将每个console.Writeline缓冲为StringBuilder

是否有办法在应用程序运行到结束时将控制台屏幕行的完整转储到文本文件中?

将控制台应用屏幕的所有行复制到文本文件中

您可以:

1-重定向控制台。写入到文件:

System.IO.FileStream fs = new System.IO.FileStream(@"C:'Output.txt", System.IO.FileMode.Create);
System.IO.StreamWriter sw = new System.IO.StreamWriter(fs);
System.Console.SetOut(sw);

(PS。如果这样做,不要忘记设置控制台输出并在程序终止之前关闭流)

2-当运行你的可执行文件时,将输出指向一个文件,例如:

C:'>MyExecutable.exe > C:'Output.txt
  FileStream ostrm;
            StreamWriter writer;
            TextWriter oldOut = Console.Out;
            try
            {
                ostrm = new FileStream("./Redirect.txt", FileMode.OpenOrCreate, FileAccess.Write);
                writer = new StreamWriter(ostrm);
            }
            catch (Exception e)
            {
                Console.WriteLine("Cannot open Redirect.txt for writing");
                Console.WriteLine(e.Message);
                return;
            }
            Console.SetOut(writer);
            Console.WriteLine("This is a line of text");
            Console.WriteLine("Everything written to Console.Write() or");
            Console.WriteLine("Console.WriteLine() will be written to a file");
            Console.SetOut(oldOut);
            writer.Close();
            ostrm.Close();
            Console.WriteLine("Done");

use可以使用Console.SetOut()设置输出

很好的例子:http://www.java2s.com/Code/CSharp/Development-Class/DemonstratesredirectingtheConsoleoutputtoafile.htm