为什么获胜';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'

为什么获胜';t streamreader读取标准错误流

ProcessStandardError属性已经是StreamReader。没有必要创建一个新的。

然而,您确实需要在过程开始前重定向标准错误,以便从中读取

p.StartInfo.RedirectStandardError = true;

p.StandardError属性已经是StreamReader,所以您可以简单地读取它:

p.WaitForExit();
MessageBox.Show(p.StandardError.ReadToEnd());

另外,在开始处理之前,不要忘记重定向标准错误,否则当你试图读取它时会出现异常:

p.StartInfo.RedirectStandardError = true;
p.StandardError 

已经是StreamReader,请使用该实例。