на новой строке может быть желательно, но это еще одна хитрая банка червей, чтобы выработать.
ужен совет о том, как сделать так, чтобы мое консольное приложение C # отображало текст для пользователя через стандартный вывод, и в то же время оно было доступно позже. Фактическая функция, которую я хотел бы реализовать, - это сбросить весь выходной буфер в текстовый файл в конце выполнения программы.
Обходной путь, который я использую, пока не нахожу более чистого подхода, заключается в создании подклассаTextWriter
переопределяя методы записи, чтобы они одновременно записывали в файл и вызывали исходный модуль записи stdout. Что-то вроде этого:
public class DirtyWorkaround {
private class DirtyWriter : TextWriter {
private TextWriter stdoutWriter;
private StreamWriter fileWriter;
public DirtyWriter(string path, TextWriter stdoutWriter) {
this.stdoutWriter = stdoutWriter;
this.fileWriter = new StreamWriter(path);
}
override public void Write(string s) {
stdoutWriter.Write(s);
fileWriter.Write(s);
fileWriter.Flush();
}
// Same as above for WriteLine() and WriteLine(string),
// plus whatever methods I need to override to inherit
// from TextWriter (Encoding.Get I guess).
}
public static void Main(string[] args) {
using (DirtyWriter dw = new DirtyWriter("path", Console.Out)) {
Console.SetOut(dw);
// Teh codez
}
}
}
Посмотрите, что он пишет и сбрасывает файл все время. Я хотел бы сделать это только в конце выполнения, но я не мог найти способ получить доступ к выходному буферу.
Также извините за неточности с приведенным выше кодом (пришлось его написатьдля этого случая, извиняюсь ;).