为什么获胜';t streamreader读取标准错误流
本文关键字:streamreader 读取 标准错误流 获胜 为什么 | 更新日期: 2023-09-27 18:08:59
因此,我得到了一条关于调试代码的建议,但我尝试调试时出现了更多错误。我有所有正确的用法,但我的问题是:
Process p = new Process();
p.StartInfo.FileName = "javac";
Directory.CreateDirectory(System.IO.Path.Combine(Application.StartupPath + @"'TempJavaalfgwaepfgawe"));
p.StartInfo.Arguments = "-d " + System.IO.Path.Combine(Application.StartupPath + @"'TempJavaalfgwaepfgawe") + " " + files;
p.Start();
p.WaitForExit();
StreamReader sr = new StreamReader(p.StandardError);
MessageBox.Show(sr.ReadToEnd());
无论如何,错误源于我声明streamreader:
StreamReader sr = new StreamReader(p.StandardError);
我得到以下两个错误:
The best overloaded method match for 'System.IO.StreamReader.StreamReader(string)' has some invalid arguments
Argument 1: cannot convert from 'System.IO.StreamReader' to 'string'
Process
的StandardError
属性已经是StreamReader
。没有必要创建一个新的。
然而,您确实需要在过程开始前重定向标准错误,以便从中读取
p.StartInfo.RedirectStandardError = true;
p.StandardError
属性已经是StreamReader
,所以您可以简单地读取它:
p.WaitForExit();
MessageBox.Show(p.StandardError.ReadToEnd());
另外,在开始处理之前,不要忘记重定向标准错误,否则当你试图读取它时会出现异常:
p.StartInfo.RedirectStandardError = true;
p.StandardError
已经是StreamReader,请使用该实例。