古腾标签!
问题是:我有一些代码通过终端(命令行窗口)上的 Console
类打印一些文本消息。我需要将这些信息放在两个“容器”中——终端和文本文件。
有没有一种方法可以将输出流添加到 Console
类,以使其不仅在终端上输出数据?
如果我不需要过多更改现有代码,我会很高兴(有很多地方使用了 Console.Write()
和 Console.WriteLine()
).
最佳答案
这不是一个完整的实现,但它应该足以让您开始您寻求的道路。
class Program
{
static void Main(string[] args)
{
DualOut.Init();
Console.WriteLine("Hello");
Console.ReadLine();
}
}
public static class DualOut
{
private static TextWriter _current;
private class OutputWriter : TextWriter
{
public override Encoding Encoding
{
get
{
return _current.Encoding;
}
}
public override void WriteLine(string value)
{
_current.WriteLine(value);
File.WriteAllLines("Output.txt", new string[] { value });
}
}
public static void Init()
{
_current = Console.Out;
Console.SetOut(new OutputWriter());
}
}
如果运行此代码,您将看到“Hello”同时打印到控制台和文件“Output.txt”
关于c# - 同时在控制台和文件上写入文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32770658/