如何将进程输出重定向到 System.String
我正在从 .NET 应用程序调用 Java 进程,并且需要重定向控制台输出 到 System.String 进行一些稍后的解析。请指教。我希望有简短的代码示例。
public bool RunJava(string fileName)
{
try
{
ProcessStartInfo psi = new ProcessStartInfo();
psi.CreateNoWindow = true;
psi.UseShellExecute = false;
psi.EnvironmentVariables.Add("VARIABLE1", "1");
psi.FileName = "JAVA.exe";
psi.Arguments = "-Xmx256m jar.name";
Process.Start(psi);
return true;
}
catch (Exception ex)
{
return false;
}
}
I am calling Java process from .NET application and I need to redirect console output
to System.String to do some later parsing. Please advice. I would appreciate short code example.
public bool RunJava(string fileName)
{
try
{
ProcessStartInfo psi = new ProcessStartInfo();
psi.CreateNoWindow = true;
psi.UseShellExecute = false;
psi.EnvironmentVariables.Add("VARIABLE1", "1");
psi.FileName = "JAVA.exe";
psi.Arguments = "-Xmx256m jar.name";
Process.Start(psi);
return true;
}
catch (Exception ex)
{
return false;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
更好的方法是创建一个 Process 实例并使用如下所示的流捕获输出:
A better way will be to create a
Process
instance and capture the output using a stream like this:您需要将 RedirectStandardOutput 设置为 true,并且那么获取结果的最简单方法是使用事件驱动机制:
其中
LineHandler
是收集每行输出的适当方法,例如收集到StringWriter
中。You need to set RedirectStandardOutput to true, and then the easiest way of getting the results is to use the event-driven mechanism:
where
LineHandler
is an appropriate method to collect each line of output, e.g. into aStringWriter
.设置
ProcessStartInfo.RedirectStandardOutput
和
.RedirectStandardError
。然后,您可以读取从
Process.Start
返回的 Process 对象上的StandardOutput
和StandardError
流。MSDN 为您提供了一个很好且简单的示例。
Set
ProcessStartInfo.RedirectStandardOutput
and
.RedirectStandardError
.Then you can read the
StandardOutput
andStandardError
-streams on the Process-object that is returned fromProcess.Start
.MSDN have a nice and simple sample for you.