How to redirect process output to System.String

前端 未结 3 545
伪装坚强ぢ
伪装坚强ぢ 2020-12-21 04:06

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

相关标签:
3条回答
  • 2020-12-21 04:40

    You need to set RedirectStandardOutput to true, and then the easiest way of getting the results is to use the event-driven mechanism:

    Process p = Process.Start(psi);
    p.BeginOutputReadLine(LineHandler);
    p.EnableRaisingEvents = true;
    

    where LineHandler is an appropriate method to collect each line of output, e.g. into a StringWriter.

    0 讨论(0)
  • 2020-12-21 04:42

    Set
    ProcessStartInfo.RedirectStandardOutput
    and
    .RedirectStandardError.
    Then you can read the StandardOutput and StandardError-streams on the Process-object that is returned from Process.Start.

    MSDN have a nice and simple sample for you.

    0 讨论(0)
  • 2020-12-21 05:03

    A better way will be to create a Process instance and capture the output using a stream like this:

    Process cmd = new Process();
    cmd.StartInfo.FileName = "JAVA.exe";
    cmd.StartInfo.Arguments = "-Xmx256m jar.name";
    cmd.StartInfo.UseShellExecute = false;
    cmd.StartInfo.CreateNoWindow = true;
    cmd.StartInfo.RedirectStandardOutput = true;
    cmd.StartInfo.EnvironmentVariables.Add("VARIABLE1", "1");
    cmd.Start();
    
    StreamReader sr = cmd.StandardOutput;
    string output = sr.ReadToEnd();
    cmd.WaitForExit();
    
    0 讨论(0)
提交回复
热议问题