Tôi biết rằng có stdout/in/err cho một chương trình và tôi muốn chuyển hướng đầu ra của chương trình sang một tệp thay vì đầu ra của bàn điều khiển. Và bây giờ tôi hình dung nó ra với mã dưới đây:Làm cách nào để ghi trực tiếp vào luồng StdOut của chương trình trong C#?
FileStream fs = File.Open(@"E:\console.txt", FileMode.OpenOrCreate);
StreamWriter sw = new StreamWriter(fs);
TextWriter old = Console.Out;
Console.SetOut(sw);
Console.Write("bbb");
sw.Flush();
Nhưng phương pháp này là để kết nối các chương trình stdout-Console.Out và chuyển hướng Console.Out đến tập tin. Đó là loại như thế này:
Program.StdOut -> Console.Out -> File
Các Console.Out đây có vẻ là một cây cầu. Tôi không muốn cây cầu này và tôi không muốn sử dụng Bảng điều khiển .Write() để tạo đầu ra. Làm cách nào tôi có thể ánh xạ luồng xuất bản của chương trình tới tệp đích trực tiếp và ghi trực tiếp vào chương trình thay vì Console.Write()? Những gì tôi muốn là loại như thế này:
Program.StdOut -> Tệp
Các Process.StandardOutput tài sản duy nhất mang lại cho tôi một readonly StreamReader đối tượng. Làm thế nào để viết cho Process.StandardOutput ?? Hoặc ở đâu là thiết bị xuất chuẩn của tại số?
Rất cám ơn.
Cảm ơn, MikeP. Tôi tự hỏi tại sao cho lớp Console yêu cầu phương thức OpenStandardOutput(), tại sao không phân loại phương thức này trong lớp Process, tôi nghĩ điều đó sẽ hợp lý hơn. Loại triết lý thiết kế nào có liên quan? – smwikipedia
Tôi không biết tại sao họ lại chọn phương pháp này. – MikeP